2010-08-27 17 views

回答

0
urlpatterns = __import__(project_urls).whateversubmodule.urlpatterns 
+0

urlpatterns = __import __('forum.urls')。urls.urlpatterns 完美運作。 – BryanWheelock 2010-08-27 20:08:08

1

所以你想要有與以前的進口相關的導入語句?

絕對是我嘗試過的一點。我有一些很長的進口聲明有一個共同的根源,所以我試圖將它分解出來。我無法使用直接導入語句來工作,但也許我沒有努力。

請記住,缺省情況下導入語句的行爲將會創建一個模塊對象。然後它將它綁定到sys.modules中,然後使用import語句的名稱將它綁定到當前模塊的名稱空間中。見http://docs.python.org/tutorial/modules.html

模塊對象有一個名稱空間。如果一個模塊不是一個包,它的命名空間來自評估模塊的.py文件的內容。但是,如果它是一個包,則命名空間來自包中的__init__.py模塊。包中的其他模塊不會自動導入,並且在包的名稱空間中不可用。你必須分別導入它們。

from ... import語句會將模塊加載到sys.modules中。然後它會將對象從您在導入中引用的模塊中拉出。最後,它使用import語句的名稱將該對象綁定到當前模塊的名稱空間中。基本上你是從一個命名空間複製一個綁定到另一個。說實話,我發現當你稍後使用它時,通常會混淆名稱的來源(所以我不這麼做)。

的一點是:

您使用的__import__是一個倒過來的import語句的限制。請參閱the python documentation。但是,如果使用from..import語句,則不要嘗試重複使用__import__中的結果名稱,除非它指向模塊對象(它可能不是)。導入只需要一個由點分隔的模塊名稱序列。

同樣,請記住,只是放置顯式導入可能是一種更清晰的方式來指示對象來自何處。

+0

尼斯詳細的回覆。我不清楚如何繼續。我贊成你。 – BryanWheelock 2010-08-27 20:07:21