关于python:ImportError:没有名为utils的模块

ImportError: No module named utils

我正试图导入一个实用程序文件,但只有当我通过脚本运行代码时才会遇到一个奇怪的错误。

当我运行test.py时

地点:home/amorav/python/proj/test.py

代码:

1
2
3
4
5
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

Traceback (most recent call last):
File"UNET_2D_AUG17.py", line 11, in
from UTILS import *
ImportError: No module named UTILS

但是当我通过bash终端运行代码时,它似乎工作正常

1
2
3
4
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']

1
>>> from UTILS import *

blah blah -everything is fine- blah blah

我在Linux机器上运行python 2.7.10


您的项目如下所示:

1
2
3
4
+- proj
|  +- test.py
+- UTILS.py
+- ...

如果要导入utils.py,可以选择:

(1)将路径添加到test.py中的sys.path

1
2
3
4
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)创建包(仅限导入)

1
2
3
4
5
6
7
Python
+- proj
|  +- test.py
|  +- __init__.py
+- UTILS.py
+- __init__.py
+- ...

现在,您可以在test.py中编写它,如果您是import Python.proj.test

1
from .. import UTILS

回答错误

我犯过几次这个错误。我想,我记得。

修正:不运行test.py,运行./test.py

如果您查看sys.path,可以看到里面有一个空字符串,它是执行文件的路径。

  • test.py''加到sys.path上。
  • ./test.py'.'加到sys.path上。
  • 小精灵

    我想只能从"."进口。