ImportError无法找到模块

时间:2016-02-11 22:53:36

标签: python

我正在尝试运行python文件,但我一直收到一个ImportError。

我的设置是我有一个项目,其中包含以下路径:

/Users/John/Documents/pythonprojects/projectX

在'projectX'中我有一个名为'components'的文件夹,其中包含两个名为'py_file'和'init'的python文件。

/Users/John/Documents/pythonprojects/projectX/components

在'py_file'的顶部,我正在导入一个在'init'中定义的namedTuple

`from components import some_tuple`

当我运行python py_file.py run时,我得到ImportError: No module named components

但是,如果我添加以下行,我可以让文件运行:

import sys
sys.path.append("..")

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您应该确保PYTHONPATH环境变量设置为/Users/John/Documents/pythonprojects/projectX

实际上,您使用该行sys.path.append("..")即可,因为..中的相对py_file.py目录为/Users/John/Documents/pythonprojects/projectX

答案 1 :(得分:0)

from components import some_tuple

Python正在您启动它的目录中查找components。但是,您在组件目录中启动了Python ,因此无法运行。将".."附加到您的路径似乎可以解决问题,因为现在Python将查找包含components的父目录。

然而,更好的方法是单独留下sys.path。找出程序中哪个.py文件将成为入口点,并在从那里执行时使所有导入工作。然后,始终从那里执行您的程序。如果你想在某个地方的某个软件包中快速测试一些小模块,那就写一些测试吧!

如果您希望从任何地方开始执行的灵活性,您可以查看relative imports。就个人而言,我认为在绝对进口有意义之前,这些情况会更好。