我在工作区中有两个项目: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路径时,不会发生此错误
如何解决此问题,我可以添加多个项目路径。
答案 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项目应该是自包含的,并且通常没有深层嵌套的命名空间。