无法从不同的目录导入模块

时间:2014-05-25 09:33:49

标签: python-2.7 import module

我以为我已经想出用Python导入模块但似乎我仍然缺乏这个领域。我无法弄清楚为什么这不起作用。这是我的结构:

|__bin/
    |__ __init__.py
    |__ main.py
|__modules/
     |__ __init__.py
     |__ module1.py
     |__ module2.py
|__tests/
     |__ __init__.py
     |__ test_module1.py

我认为通过添加__init__.py文件夹成为一个包。因为我尝试在我的main.py文件中执行此操作:

from modules.module1 import func1

func1module1.py中的一个简单函数。我做错了什么?

2 个答案:

答案 0 :(得分:1)

包含 modules的目录必须在sys.path中列出,以便Python导入modules包。将该目录添加到sys.path的一种方法是将其添加到PYTHONPATH环境变量中。

答案 1 :(得分:0)

问题是我的PYTHONPATH变量不在我的.bash_profile文件中(我在Mac上)。放export PYTHONPATH=$PYTHONPATH:/Path/To/My/Project并重新启动终端就可以了。

我之所以感到困惑,是因为nose.tools模块运行良好,可以毫无问题地到达modules/目录。正如@unutbu在我的评论中所说,这是nose的一个功能,它表示in their documentation

在dir中创建__init__.py文件是不够的,你必须确保Python可以读取存储项目的目录(见上文)。