[英]How can I find a python module absolute path and import it?
我寫了一個模塊,放在我項目的一個目錄下,例如:
projectRoot/src/lib/myModule.py
我的項目中有許多不同的應用程序正在使用此模塊,但每個應用程序都駐留在不同的庫中,並且從不同的位置執行,因此例如,一個應用程序可能需要在導入之前以下列方式插入此模塊:
sys.path.insert(0, '../../src/lib/myModule.py')
而另一個將使用:
sys.path.insert(0, '../lib/myModule.py')
另一方面,我可以這樣放置絕對路徑:
sys.path.insert(0, 'home/user/projectRoot/src/lib/myModule.py')
我該怎么做? 我嘗試了以下方法,但我認為我沒有得到正確的結果,因為它使用模塊-projectRoot/myModule.py 游戲我的項目根目錄-這是不正確的。
path('myModule.py').abspath()
底線是我不知道誰需要這個模塊以及它會從哪里執行(Jenkins 中的 python 模塊也將使用它)並且需要在導入模塊之前獲取正確的路徑。
調整sys.path
可能會導致混亂、痛苦和其他事情,尤其是當您開始考慮您的插件模塊如何導入它們自己的其他模塊時。
而不是試圖操縱sys.path
,您的插件模塊應該作為常規 Python 包安裝和導入(請參閱https://packaging.python.org/en/latest/ ); 然后您可以使用importlib.import_module()
按名稱導入它們(或使用入口點枚舉所有它們!)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.