将两个或多个Python项目路径添加到PYTHONPATH

时间:2013-08-27 18:47:47

标签: python python-2.7 path environment-variables pythonpath

我在工作区中有两个项目:PROJECTA和PROJECTB

我使用

将两个项目的路径添加到环境变量中

变量名:PYTHONPATH 变量值:C:\ path-to-PA \ PROJECTA; C:\ path-to-PB \ PROJECTB;

我有以下目录结构PROJECTA&项目B

PROJECTA
    com
       example
            sample
                projAAA
                   srcfiles
                   testcasefiles


PROJECTB
    com
       example
            sample
                projBBB
                   srcfiles
                   testcasefiles

我想从PROJECTB中的testcasefiles目录导入srcfiles目录中的文件

from com.example.sample.projectBBB.srcfiles import pythonfile.py

Python正在抛出异常:

ImportError:没有名为projectBBB.srcfiles的模块

当环境变量中的PYTHONPATH移除PROJECTA路径时,不会发生此错误

如何解决此问题,我可以添加多个项目路径。

1 个答案:

答案 0 :(得分:1)

嗯,Python总是第一次出现“com”(这里是PROJECTA)作为模块“com”,如果它找不到内部的东西,甚至不会寻找“com”的其他出现。 Python没有“合并”模块 - 如果你考虑它,它没有任何意义,因为模块可以任意一般和复杂。

解决方案A(正常)

在项目上方的PYTHONPATH目录中包含并使用前缀对模块进行寻址,例如:这样:

from PROJECTA import com as comA
from PROJECTB import com as comB
from comA.example.sample.projectBBB.srcfiles import pythonfile.py

顺便说一下。我们默认假设你有__init__.py个文件(即应该被视为模块的所有目录)。

解决方案B(奇怪)

在PYTHONPATH中包含项目上方的目录,如上例所示,但是创建一个第三个目录结构,如下所示:

MODULE_MERGE
    com
        example
            sample

编辑MODULE_MERGE/com/example/sample/__init__.py文件以包含此内容:

from comA.example.sample import projAAA
from comB.example.sample import projBBB

现在很高兴在MODULE_MERGE

中加入PYTHONPATH

问题在于做这些事情是否合理。我不这么认为。 Python项目应该是自包含的,并且通常没有深层嵌套的命名空间。