2011-10-25 9 views
2

こんにちは私のBlender3Dスクリプトで複数のpythonファイルを使用しようとしています。 (MyScript.pyやMyModule.pyなど)。Blender3D:Pythonスクリプトの問題 "ImportError:MyModuleというモジュールがありません"

"ImportError: No module named MyModule" 

私は私のスクリプトとMyModuleというを含むフォルダを指すように設定Blender3Dの「スクリプト」フォルダがあります。

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内のスクリプトを実行すると、私はエラーを取得:MyScript.pyは次のようになります。 py。

ありがとうございました。

J

+0

'import MyModule'の前に' sys.path'を表示すると、そのリストのモジュールへのパスは? – jro

+0

うーん、そうではありません。私はどのようにこの道についてBlenderに伝えるつもりですか? – JimFing

答えて

4

何かがsys.path変数に適切なパスを追加する必要があります。私は、具体的ブレンダーのためにそれを知りませんが、次のように一般的に、あなたはそれを追加することができます。

sys.path.append(r'.\mymodule')   # Relative path 
sys.path.append(r'C:\path\to\my\module') # Absolute path 

使用する1つは、あなたが下で実行されている条件に依存します:スクリプトは、いくつかにある場合(ブレンダーのために)dedicated scriptsフォルダには、最初のものを使うことができます。 Program Filesフォルダ(たとえば)から実行する場合は、絶対パスを使用します。

+0

素晴らしい - その解決策は機能します。どうもありがとう – JimFing

1

私のために働いたもう一つは、次のターミナルコマンドを使用して、私のPythonスクリプトを実行していた

/usr/local/bin/python2.7 path/to/script.py 
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.dirnameを必要とするとき、それはos.path.basenameを使用することで、実際にバグがありhttp://www.blender.org/documentation/blender_python_api_2_59_2/info_tips_and_tricks.htmlからそれを導出しました。

関連する問題