簡體   English   中英

如何找到 python 模塊的絕對路徑並導入它?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM