ImportError:没有名为的模块

时间:2017-01-28 01:00:31

标签: python python-2.7 pycharm python-import importerror

我会觉得这是一个绝对的白痴,我不知道是不是因为它是星期五晚上,但我很难理解为什么我遇到这个极其简单的代码有问题

目录结构:

~/testapp/
~/testapp/__init__.py
~/testapp/settings.py
~/testapp/workers/a.py

〜/ testapp / settings.py:

x = 1

〜/ testapp /工人/ a.py:

from settings import x

通过PyCharm运行〜/ testapp / workers / a.py时,运行正常。但是当在终端中运行时,我得到:

m@G750JW:~$ python testapp/workers/a.py 
Traceback (most recent call last):
  File "testapp/workers/a.py", line 1, in <module>
    from settings import x
ImportError: No module named settings

我还在〜/ testapp / workers / a.py中尝试了以下内容:

from testapp.settings import x

并得到了同样的错误。我也试过了:

from ..settings import x

但这将返回:

m@G750JW:~/$ python testapp/workers/a.py  
Traceback (most recent call last):
  File "python testapp/workers/a.py", line 1, in <module>
    from ..settings import testvar
ValueError: Attempted relative import in non-package
我之前运行过很多使用过相同导入方法的应用程序,并且从未出现过问题。我不确定为什么突然发生这种情况。

在stackoverflow和google上查看其他类似的问题时,每个人都提到设置和检查系统路径,我已经完成了。如上所述,通过PyCharm运行此工作正常。如果我在导入之前更改〜/ testapp / workers / a.py来打印sys.path,sys.executable和os.getcwd(),那么PyCharm和控制台中的结果是相同的。

1 个答案:

答案 0 :(得分:1)

正如您所说,问题与路径有关......当您执行代码时,解释器会有一个地方列表来查找您要导入的内容。在这种情况下,它不知道您项目的根目录。

要解决此问题,请将环境变量PYTHONPATH设置为项目的根目录。像这样:

export PYTHONPATH=~/testapp