この質問はここで何度も尋ねられていますが、私はおそらく答えのほとんど(thisとthatを含む)私は非常に簡単なインポートの問題の答えを見つけることができません。私は何か愚かなことを逃さなければならないほど簡単ですが、私はまだそれを見ません。 私はセットアップに以下の構造を有する:Pythonはディレクトリ内の__init.py__という名前のファイルでもサブディレクトリからモジュールをインポートできません
myproject
myscript.py
MyPackage
__init.py__
mymodule.py
私はちょうどmymodule.p
myscript.py
からY(または同じであるべきコマンドラインPythonインタプリタ)をロードします。
myscript.py
は含まれています
#!/usr/bin/python
import MyPackage
__init.py__
は含まれています
from . import mymodule
mymodule.py
は、私の目標はmyscript.py
からmyfunction
を呼び出すことですが、私がしようとした場合
#!/usr/bin/python
def myfunction():
print "mymessage"
が含まれています
- 私は障害のあるPythonのインストールの可能性を低減するために、OSXとUbuntu Linuxの下のすべてのものを試してみました:私はすでに試した
$python myscript.py Traceback (most recent call last): File "myscript.py", line 2, in <module> import MyPackage ImportError: No module named MyPackage
ものを手に入れるモジュールを呼び出します。
- 環境変数を
myproject
ディレクトリに設定し、.
ディレクトリとその両方に設定しました。 - 私は、次のimport文を試してみましたまた、Pythonインタプリタからのインポート文が
myproject
ディレクトリから を開始しようとした
__init.py__
空白のままに:同じエラーメッセージ(
from MyPackage import mymodule
import MyPackage.mymodule
import MyPackage.mymodule as module
すべての成功なし)。
mymodule.py
をプロジェクトディレクトリにパッケージを使用せずに置くと、インポートが正常に動作します。しかし、なぜサブパッケージからのインポートが機能していないのかわかりません。 どのように私はそれを働かせることができますか?
ありがとうございました!
'myproject'ディレクトリが' sys.path'にリストされているかどうかを確認する必要があります。 'MyPackage'をインポートする前に、' sys.path'に正しいディレクトリが入っていますか? –
私がインタプリタを起動し、 'import sys'と' print sys.path'を実行すると、 "myproject"ディレクトリのパスを正しく含むリストが表示されます: '[''、 '/ Users/michael/Entwicklung/python/myproject '、...] ' – mhelwig
パッケージをインポートできるようにする必要があります。パッケージには*別の*インポートエラー*がある可能性があります。既に空の '__init __。py'を試したと言っています。もう一度試してみることができますが、すべての '* .pyc'ファイルを削除してください。おそらく '__init __。py'に単一の' print 'インポートされた ''行を追加してください。 –