如何处理跨目录分布的模块?

时间:2012-03-28 20:06:56

标签: python import module

我有一个项目,我的项目的每个方面都有一个目录,我遇到了导入问题。也就是说,导入内容正在成为sys.path.append()PYTHONPATH hackery的讨厌组合。

如何跨多个目录分布的项目通常会处理这类事情?

2 个答案:

答案 0 :(得分:3)

我会为我的项目设置virtual environment,然后将所有模块安装到该环境中,通过普通的Python import进程找到它们。

这确实需要您在更改模块时更新虚拟环境,但假设正确配置setup.py,这通常很容易:

$ cd /path/to/myproject
$ easy_install .

此外,您不需要使用 {/ 1>} PYTHONPATHsys.path来解决问题。假设模块数量有限,您可以制作一个适当设置PYTHONPATH的shell脚本,然后根据需要将其输入。

答案 1 :(得分:3)

如果您有每个模块的目录,并且可以将它们放在一个模块下,那么最简单的解决方案是使用包,例如。

myproject
    __init__.py
    mymodule1
        __init__.py
    mymodule2
        __init__.py

所以你可以像

一样导入
from myproject import mymodule1 etc

如果您不能将所有目录保存在一棵树下,而不是将它们视为单独的项目/库,那么您应该使用distutils等安装它们以纠正python路径阅读this