Blender3D:Python脚本问题“ImportError:没有名为MyModule的模块”

时间:2011-10-25 09:29:42

标签: python blender

您好我正在尝试在我的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的文件夹。

感谢您的帮助。

Ĵ

3 个答案:

答案 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