Blender3D:Python脚本问题“ImportError: 没有名为MyModule的模块”
你好,我正在尝试在我的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 的文件夹。
谢谢你的帮助。
J
3 个回答
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)
这个做法是我从这个链接上得到的,不过那个链接里有个小错误,它用到了os.path.basename
,其实应该用os.path.dirname
。
1
还有一个对我有效的方法是用下面这个终端命令来运行我的Python脚本。
/usr/local/bin/python2.7 path/to/script.py
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
文件夹里运行它,就要用绝对路径。