具體來說,我需要從導入模塊中的主模塊獲取一些對象和全局變量。我知道如何在父模塊需要某個子模塊的特定事物時找到這些東西,但我無法弄清楚如何去往另一個方向。在Python中,如何從導入的模塊訪問主模塊的名稱空間?
回答
import __main__
但是不要這樣做。
爲什麼不這樣做? – Alcott 2014-07-04 05:00:18
@Alcott:因爲它可以很容易地把你的程序變成椒鹽捲餅。 – 2014-07-04 05:06:47
@ IgnacioVazquez-Abrams你可以擴展嗎? – 2017-06-22 21:52:11
不知道這是否是一種好的做法,但可以將需要的對象和變量作爲參數傳遞給您在導入模塊中調用的方法或類。
,我認爲這會工作:
import sys
main_mod = sys.modules['__main__']
這相當於'import __main__ as main_mod'。 – 2010-09-06 08:51:31
你要找的答案是:
import __main__
main_global1= __main__.global1
但是,每當一個模塊module1
從__main__
模塊需要的東西,然後:
- 要麼
__main__
模塊應提供所有必要的數據爲參數設置爲module1
函數/類, - 或者您應該將需要在另一個模塊中共享的所有內容導入到
__main__
和module1
中,並將其導入爲import module2
。
- 1. 如何訪問從Python中的調用模塊調用模塊名稱空間?
- 2. 保留導入的模塊不在Python包名稱空間
- 3. 如何將Python模塊導入與導入模塊名稱相同的包中?
- 4. 如何避免在python中導入模塊時一直寫模塊的名稱?
- 5. 如何在AngularJS中區分注入模塊的名稱空間?
- 6. Python指定從哪個模塊導入,如果有重複的模塊名稱?
- 7. Python動態導入 - 如何從變量的模塊名稱中導入*
- 8. 導入模塊命名空間類
- 9. 如何使用Javascript ES6 ES2015模塊將常量直接導出/導入到導入模塊名稱空間?
- 10. 在python中,如何在不保留導入模塊的名稱空間的情況下從其他模塊導入所有類?
- 11. python模塊導入問題
- 12. Python模塊導入問題
- 13. Python模塊導入問題
- 14. 如何將子模塊名稱保留在Python包的名稱空間之外?
- 15. 如何導入名稱與包裝中的模塊衝突的模塊?
- 16. 在Python中導入模塊
- 17. 從Bash導入Python模塊
- 18. 從模塊導入Python
- 19. 覆蓋進口,模塊的顯示名稱導入模塊
- 20. 子模塊導入主模塊
- 21. 從模塊到Coffeescript中的全局名稱空間導入函數?
- 22. 導入模塊名稱衝突在Django
- 23. 從oustide模塊訪問的模塊
- 24. 的Python:愨模塊和命名空間
- 25. 如何從docker導入python模塊
- 26. 如何從python模塊(boost.python)導入類?
- 27. 如何將函數導入到我的模塊的主命名空間?
- 28. 在python中,如何通過模塊名稱的用戶輸入字符串導入模塊
- 29. 無法從谷歌模塊中導入模塊搜索在python
- 30. 如何導入可通過url訪問的python模塊
嗯,好吧,我認爲一定是這種情況,因爲我無法在任何地方找到任何答案。底線是我不關心重複使用這些代碼,我只是試圖將這個項目拆分成多個文件,因此更容易找到我正在尋找的東西。說實話,我並不真正知道自己在做什麼,所以這是一種學習體驗,但實際上我只是希望在編輯時能夠更容易地找到要編輯的代碼。 – Damon 2010-09-06 02:15:05
我同意應該有一種方法來將參數傳遞給模塊,當它被導入 - 有點像當你將它們傳遞給對象構造函數時。然而,我從來沒有找到一個乾淨的方式來做到這一點。 – martineau 2010-09-06 10:14:28
我一直在尋找完全相同的原因,所以它似乎是一個典型的新手東西.. – sfranky 2012-12-15 20:33:03