【问题标题】:ImportError: No module named utilsImportError:没有名为 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

【问题讨论】:

    标签: python python-2.7 import module python-module


    【解决方案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 位于同一目录时,导入有效
    • 我必须承认,在回答之前我没有正确阅读您的问题。
    猜你喜欢
    • 2019-05-18
    • 2023-03-06
    • 2013-12-02
    • 1970-01-01
    • 2019-03-13
    • 2018-09-07
    • 2020-10-23
    • 2016-05-31
    • 2013-03-11
    相关资源
    最近更新 更多