如何在Python 2.7目录结构中使导入工作?

时间:2015-10-26 10:55:33

标签: python python-2.7 import module relative

我正在尝试将自定义模块和函数导入到我的Python脚本中,并且我尝试了相对和绝对导入,但我真的无法使其工作。我知道这个问题已在这里被多次提出,但尝试回答这些问题导致我无处可去...说我创建了一个带有函数func.py的文件,我在子目录中。它包含函数func1和func2。我想将这些函数导入到我的主程序文件中,我们称之为prog.py.这是我的目录结构的简化版本:

   C:/Project
     __init__.py
            /Demo
                 __init__.py
                 prog.py
            /Functions
                 __init__.py
                 func.py

我的__init__.py个文件为空。我试图以不同的方式将func1和func 2导入prog.py,但它们都不起作用。使用from .Functions.func import func1(一个或两个点)给我

  

ValueError:在非包中尝试相对导入

没有前导点给我一个“没有名为...的模块”错误,有点像预期的那样。我也试过from Project.Functions.func import func1并得到同样的错误。

我没有使用__init__.py将其定义为包吗?我是否需要在这些文件中写一些内容,或者在某处使用__main__.py

我使用Windows 7 64位,因此我使用

在命令提示符下运行脚本
  

python prog.py

在“Demo”文件夹中。否则我会不方便。我尝试使用标志为python命令并在顶层运行它,但它仍然无法工作(我将重新创建它以在需要时复制错误消息)。由于我在Windows中工作,我尝试将Project及其所有子文件夹添加到Python路径环境变量中,但无济于事。也许我可以使用sys.path.append“手动”添加每个功能,但考虑到实际的文件数,这不太实用。

我很感激任何帮助,因为我一直坚持这个,因为我不知道多久。很抱歉还有另一个Python 2.7导入问题...希望我已经提供了足够的信息。提前谢谢!

1 个答案:

答案 0 :(得分:0)

sys.path.append将解决它。我更喜欢(你尝试过的)ENV变量PYTHONPATH你可以放在libs那里然后python也会在那里搜索它们。

你说你添加了这个,但你的shell选择应用程序的变化?当你做

时,你是否正确设置变量?
import os
print os.environ