この質問にはさまざまなバリエーションがあることは知っていますが、私のような質問は見つかりませんでした。モジュールをインポートしようとするとillustris_python
エラーが発生しますImportError: No module named 'util'
モジュールutilは、モジュールの下のディレクトリにありますsnapshot.py
それが必要なので、なぜpythonは一方のモジュールを見るが、もう一方は見ないのか混乱します。インポート呼び出しとトレースバックを以下に含めました。
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.
IPython 3.0.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
%guiref -> A brief reference about the graphical user interface.
In [1]: import illustris_python as il
Traceback (most recent call last):
File "<ipython-input-1-ff06d24b4811>", line 1, in <module>
import illustris_python as il
File "C:\WinPython-64bit-3.4.3.2\python-3.4.3.AMD64\lib\site- packages\illustris_python\__init__.py", line 3, in <module>
from . import *
File "C:\WinPython-64bit-3.4.3.2\python-3.4.3.AMD64\lib\site- packages\illustris_python\snapshot.py", line 6, in <module>
from util import partTypeNum
ImportError: No module named 'util'
In [2]:
BitBucketレポジトリ を見ると、問題はこのコードがPython 2.xのみであるということです。誰かがそれをクリーンアップするためにいくつかの作業を行っています最終的な移植ですが、まだやるべきことがあります。
この特定のエラーは snapshot.py
の上部近く :
from util import partTypeNum
Python 2.6では、これはrelativeインポートです( PEP 328 によって「非推奨」になります) =ですが、デフォルトでは実際には警告が表示されないと確信しています…)。そのため、最初にsnapshot.py
と同じパッケージを調べ、util.py
を見つけてから調べます。 sys.path
。
Python 3.4では、absoluteインポートなので、sys.path
を調べるだけです(まあ、トップレベルのモジュールファインダーを呼び出しますが、通常はsys.path
)を調べることを意味し、そこにはutil.py
はありません。
このサンプルコードを自分で3.xに移植し終えようとしている場合は、明示的な相対インポートに変更するだけです。
from .util import partTypeNum
今、私はあなたが抱えている問題を解決しました。私がやったことは、「illustris_python」の方向にターミナルを開くことです。お役に立てば幸いです。