我有两个项目,每个项目都有一个Python文件夹,其中有一个名为lib_py的文件夹和一些共享库Python文件。 请注意,即使lib_py是一组共享库,每个项目都可以具有较旧/较新版本的lib_py文件(基于其需求)。所以这就是为什么每个项目都需要有lib_py文件夹。该层次是像以下:在Python中导入包时发生冲突
Project1
Python
lib_py
__init__.py
example.py
main
main.py
Project2
Python
lib_py
__init__.py
example.py
main
main.py
在两个项目中都main.py,example.py导入如下:
from lib_py.example import x
为了每个main.py访问example.py,我在追加我sys.paths以下两个路径:
D:\Project1\Python
D:\Project2\Python
问题发生在这里:从PROJECT1 main.py被调用时,使用好example.py但是当从PROJECT1调用main.py权后,主Project2中的.py是ca lled,再次调用Project1中的example.py,但我期望使用Project2中的example.py。
如果找到几个具有相同名称的应用程序,有什么方法可以精确地确定应该使用哪个包? 您认为还有其他解决方案吗? (不改变的课程目录层次结构)
感谢
同样的评论,我为Arun G编写的建议: 问题是我在这里描述的方案是非常简单的现实版本。事实上,Project1和Project2中的层次结构更复杂(大量的文件夹层次),每个项目中都有更多的文件夹。项目不仅仅是Python项目,而是C++。所以,如果我使用你的建议解决方案,首先我应该在很多文件夹中添加很多__init __.py,其次导入会更复杂,因为有很多层次。 –
@pashashadkami,请检查编辑 – onkar
而不是使用sys.path.append,您也可以将Project1和Project2的父目录添加到PYTHONPATH – Overdrivr