我有兩個項目,每個項目都有一個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