您好我正在尝试在我的Blender3D脚本中使用多个python文件。 (例如,MyScript.py和MyModule.py)。 MyScript.py看起来像:
import bpy
import math
from add_utils import AddObjectHelper, add_object_data
import mathutils
# this line doesn't work
import MyModule
#### REGISTER ####
def register():
pass
def unregister():
print("Finished")
if __name__ == '__main__':
register()
在Blender3D中运行脚本,我收到错误:
"ImportError: No module named MyModule"
我已将Blender3D的“脚本”文件夹设置为指向包含我的脚本和MyModule.py的文件夹。
感谢您的帮助。
Ĵ
答案 0 :(得分:4)
必须添加sys.path
变量的正确路径。我不是特别为Blender知道它,但一般来说,你可以按如下方式添加它:
sys.path.append(r'.\mymodule') # Relative path
sys.path.append(r'C:\path\to\my\module') # Absolute path
要使用的那个取决于您运行的条件:如果您的脚本在某些(对于Blender)专用脚本文件夹中,您可以使用第一个。如果从(例如)Program Files
文件夹运行它,请使用绝对路径。
答案 1 :(得分:1)
另一件对我有用的事情是使用以下终端命令运行我的python脚本
/usr/local/bin/python2.7 path/to/script.py
答案 2 :(得分:0)
当我使用与.blend文件位于同一目录的外部模块时,我使用的另一个陈词滥调是:
basedir =os.path.dirname(bpy.data.filepath)
if basedir not in sys.path:
sys.path.append(basedir)
import marchingCubes
# this next part forces a reload in case you edit the source after you first start the blender session
import imp
imp.reload(marchingCubes)
我是从http://www.blender.org/documentation/blender_python_api_2_59_2/info_tips_and_tricks.html派生出来的,实际上有一个错误,因为当你真正需要os.path.basename
时,它会使用os.path.dirname
。