ユーティリティファイルをインポートしようとしていますが、スクリプトを介してコードを実行する場合にのみ、奇妙なエラーが発生します。
Test.pyを実行するとき
場所:/home/amourav/Python/proj/test.py
コード:
import os
os.chdir(r'/home/amourav/Python/')
print os.listdir(os.getcwd())
print os.getcwd()
from UTILS import *
出力は次のとおりです。
['UTILS_local.py'、 'UTILS.py'、 'proj'、 'UTILS.pyc']
/ home/amourav/Python
トレースバック(最後の最後の呼び出し):ファイル「UNET_2D_AUG17.py」、11行目、UTILSインポートから* ImportError:UTILSという名前のモジュールはありません
しかし、bashターミナルを介してコードを実行すると、正常に動作するようです
bash-4.1$ python
>>> import os
>>> os.chdir(r'/home/amourav/Python/')
>>> print os.listdir(os.getcwd())
['UTILS_local.py'、 'UTILS.py'、 'proj'、 'UTILS.pyc']
>>> from UTILS import *
何とか-すべてが素晴らしい-何とか何とか
LinuxマシンでPython 2.7.10を実行しています
プロジェクトは次のようになります。
+- proj
| +- test.py
+- UTILS.py
+- ...
UTILS.pyをインポートする場合は、次を選択できます。
(1)test.pyのsys.pathにパスを追加します
import os, sys
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
# now you may get a problem with what I wrote below.
import UTILS
(2)パッケージを作成する(インポートのみ)
Python
+- proj
| +- test.py
| +- __init__.py
+- UTILS.py
+- __init__.py
+- ...
import Python.proj.test
の場合、test.pyでこれを記述できます。
from .. import UTILS
間違った回答
このエラーが何度かありました。覚えていると思う。
修正:test.py
を実行せず、./test.py
を実行します。
sys.path
を見ると、実行されたファイルのパスである空の文字列があることがわかります。
test.py
は''
をsys.path
に追加します./test.py
は'.'
をsys.path
に追加しますインポートは"."
からのみ実行できると思います。