簡體   English   中英

如何運行帶有Blender參數的python腳本?

[英]How to run a python script taking arguments with blender?

我有一個腳本,我想在Blender中運行以生成AO映射(腳本是提供給我的,並且源保證它可以工作)。

我嘗試如下運行腳本:

blender --background --python /opt/ff/product_builder/furniture_builder/generate_ao_maps.py --input_dir /tmp/test.obj --output_dir /tmp/test.png --mode ao

產生:

AL lib: (EE) UpdateDeviceParams: Failed to set 44100hz, got 48000hz instead
found bundled python: /usr/share/blender/2.79/python
Traceback (most recent call last):
  File "/opt/ff/product_builder/furniture_builder/generate_ao_maps.py", line 195, in <module>
    main()
  File "/opt/ff/product_builder/furniture_builder/generate_ao_maps.py", line 178, in main
    args = parse_args()
  File "/opt/ff/product_builder/furniture_builder/generate_ao_maps.py", line 21, in parse_args
    return parser.parse_args(os.getenv(BLENDER_ENV).split(' '))
AttributeError: 'NoneType' object has no attribute 'split'
Error: File format is not supported in file '/tmp/test.obj'

Blender quit

如果我在沒有Blender的情況下運行相同的腳本(但帶有參數),它將告訴我:

Traceback (most recent call last):
  File "/opt/ff/product_builder/furniture_builder/generate_ao_maps.py", line 5, in <module>
    import bpy
ImportError: No module named bpy

我需要怎么做才能將參數傳遞給腳本並使它正常工作?

您正在看到該錯誤,因為腳本正在尋找環境變量BLENDER_ENV ,該變量不在您的系統上。 我不認為BLENDER_ENV是與Blender相關的標准環境變量,因此您的朋友很可能將BLENDER_ENV添加到他或她的環境中。

首先,blender會按照給定的順序處理其cli參數 ,因此您的示例將從后台開始,運行腳本,然后設置input_dir ...這很可能不會得到您想要的結果。

腳本失敗的問題在於,傳遞給os.getenv()的arg必須是一個字符串,它是shell環境變量的名稱,如果您使用的是bash,則需要os.getenv()出該變量以將其放入環境中您開始攪拌器。

export BLENDER_ARGS="arg1 arg2"
blender -b myfile.blend --python myscript.py

如果使用的是csh,則使用setenv BLENDER_ARGS "arg1 arg2"

然后在py腳本中,使用os.getenv('BLENDER_ARGS').split(' ')

請注意,每個外殼程序實例是一個單獨的環境,您需要在啟動Blender的同一實例中設置變量。

您可能也有興趣將cli參數傳遞給腳本,如針對此問題的解釋所述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM