我有一个项目,我的项目的每个方面都有一个目录,我遇到了导入问题。也就是说,导入内容正在成为sys.path.append()
和PYTHONPATH
hackery的讨厌组合。
如何跨多个目录分布的项目通常会处理这类事情?
答案 0 :(得分:3)
我会为我的项目设置virtual environment,然后将所有模块安装到该环境中,通过普通的Python import
进程找到它们。
这确实需要您在更改模块时更新虚拟环境,但假设正确配置setup.py
,这通常很容易:
$ cd /path/to/myproject
$ easy_install .
此外,您不需要使用 {/ 1>} PYTHONPATH
和sys.path
来解决问题。假设模块数量有限,您可以制作一个适当设置PYTHONPATH
的shell脚本,然后根据需要将其输入。
答案 1 :(得分:3)
如果您有每个模块的目录,并且可以将它们放在一个模块下,那么最简单的解决方案是使用包,例如。
myproject
__init__.py
mymodule1
__init__.py
mymodule2
__init__.py
所以你可以像
一样导入from myproject import mymodule1 etc
如果您不能将所有目录保存在一棵树下,而不是将它们视为单独的项目/库,那么您应该使用distutils等安装它们以纠正python路径阅读this