2010-07-03 81 views
1

在交互式Python我想導入一個模塊就是在,比如說,在交互式Python,如何明確地導入模塊

C:\模塊\模塊1 \ module.py

我已經能夠做的就是創建一個空

C:\Modules\Module1\__init__.py 

然後執行:

>>> import sys 
>>> sys.path.append(r'C:\Modules\Module1') 
>>> import module 

而且這樣的作品,但我不得不追加到sys.path中,並且如果sys.path中還有另一個名爲module.py的文件,那麼如何明確地解析爲我真正想要導入的文件?

是否有另一種導入方式,不涉及追加到sys.path?

+0

請參閱[如何從文件名導入模塊](http://stackoverflow.com/questions/67631/how-to-import-module-from-file-name) – 2010-07-03 23:53:22

+0

感謝您的回覆。我喜歡以下方法: >>> import imp >>> m = imp.find_module('module',r'c:\ modules \ module1') >>> imp.load_module('module',m [0],M [1],M [2]) – apalopohapa 2010-07-04 00:18:28

回答

4

編輯:以下是我已經忘記的東西:Is this correct way to import python scripts residing in arbitrary folders?我會將我的答案留在這裏作爲參考。


有,但你基本上拉閘寫你自己的進口商,其手動創建一個新的模塊對象,並使用execfile到該對象的「命名空間」運行模塊的代碼。如果你想這樣做,看看mod_python importer爲例。

對於一個簡單的解決方案,你可以只添加要導入到開始的sys.path,不是結束的文件的目錄,比如:

>>> import sys 
>>> sys.path.insert(0, r'C:\Modules\Module1') 
>>> import module 

你不應該需要創建__init__.py文件,除非你從包內導入(所以,如果你在做import package.module那麼你需要__init__.py)。

1

將在sys.path(在最初的地方)效果更好:

>>> import sys 
>>> sys.path.insert(0, 'C:/Modules/Module1') 
>>> import module 
>>> del sys.path[0] # if you don't want that directory in the path 

append到列表把在最後到位的項目,所以它很可能是在其他先前的入口路徑優先;把目錄放在第一個的地方,因此是一個更健全的方法。