我有一個需要能夠運行外部腳本的python項目。重新導入具有相同名稱的不同python模塊
這些腳本被動態地導入到一個包含多個模塊的目錄結構中。
現在,由於這些腳本是獨立編寫的並且彼此不知道,所以它們通常使用相同的模塊名稱。
這對我來說是一個接一個地導入它們的問題。
例如,這裏是我的目錄結構:
- main.py
- 一個
- a.py
- utils.py
- b
- b.py
- utils.py
- 一個
所以我在根文件夾中main.py腳本,並在A和B文件夾2 「外部」 的腳本。
這兩個腳本都使用不同的utils.py模塊。一個/ a.py的
內容:一個/ utils.py的
import utils
utils.hello()
內容:B/b.py的
def hello():
print 'hello from a'
內容:
import utils
utils.hello()
內容b/utils.py:
def hello():
print 'hello from b'
個
main.py的內容現在
import sys
sys.path.append('a')
import a
sys.path.append('b')
import b
,這個例子打印:
hello from a
hello from a
而我顯然需要打印:
hello from a
hello from b
正如我不是在 - 收取「外部」腳本,我無法修改它們,有什麼辦法可以實現這一目標嗎?
編輯
使用@進口喜歡的moinuddin-QUADRI答案:從導入確實適用於這個簡單的例子,但對於這一點:
- main.py
- a
- a.py
- LIB
- utils.py
- LIB2
- utils2.py
- b
- b.py
- LIB
- utils.py
- LIB2
- utils2.py
- a
如果每個utils.py做:
從LIB2進口utils2
對於這個工作,我需要的根文件夾腳本是在sys.path中
當B/lib中/ utils的嘗試運行:從LIB2進口utils2,它接收utils2在/ LIB2
謝謝!這個工程雖然我不知道爲什麼... –
@GuyErlich添加了一些鏈接。你可能會發現那些有用的 –
好吧,我發現了一個更復雜的解釋,但仍然無效。請參閱新的編輯 –