ImportError:没有名为 utils 的模块
Posted
技术标签:
【中文标题】ImportError:没有名为 utils 的模块【英文标题】:ImportError: No module named utils 【发布时间】:2018-01-26 05:33:23 【问题描述】:我正在尝试导入实用程序文件,但仅当我通过脚本运行代码时才遇到奇怪的错误。
当我运行 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
Traceback(最近一次调用最后一次): 文件“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 *
blah blah - 一切都很好 - blah blah
我在 linux 机器上运行 Python 2.7.10
【问题讨论】:
【参考方案1】:您的项目如下所示:
+- 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
:
from .. import UTILS
错误答案
我多次遇到此错误。我想,我记得。
修复:不运行test.py
,运行./test.py
。
如果你看一下sys.path
,你可以看到里面有一个空字符串,是执行文件的路径。
test.py
将 ''
添加到 sys.path
./test.py
将 '.'
添加到 sys.path
我认为只能从"."
执行导入。
【讨论】:
你能详细说明为什么会这样吗? ^^ 我正在尝试重现它,但我失败了。 Python 2.7.12 以为它工作了一秒钟,但没有。 python ./test.py -> 导入错误 当 utils 文件与 test.py 位于同一目录时,导入有效 我必须承认,在回答之前我没有正确阅读您的问题。以上是关于ImportError:没有名为 utils 的模块的主要内容,如果未能解决你的问题,请参考以下文章