我以为我已经想出用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
func1
是module1.py
中的一个简单函数。我做错了什么?
答案 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可以读取存储项目的目录(见上文)。