web-dev-qa-db-ja.com

ImportError:utilsという名前のモジュールはありません

ユーティリティファイルをインポートしようとしていますが、スクリプトを介してコードを実行する場合にのみ、奇妙なエラーが発生します。

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を実行しています

11
A.Mouraviev

プロジェクトは次のようになります。

+- 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に追加します

インポートは"."からのみ実行できると思います。

6
User