我正在尝试运行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("..")
有什么想法吗?
答案 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。就个人而言,我认为在绝对进口有意义之前,这些情况会更好。