2014-01-08 96 views
0

因此,我是一個初學者到python /編程,並在教程中找到了這個代碼,我很難理解。我所做的是,我去了我的python目錄(它包含所有模塊)的site-packages文件夾。在那裏我可以找到目錄結構爲: -在python中調用模塊

pythonds/basic/stack.py 

文件stack.py在其中有一個「class Stack」。 所以我正確解釋/關聯導入命令到這個目錄結構?另外,無論何時在python中發生這樣長的模塊鏈接,都可以通過這種方式來理解。

+2

http://docs.python.org/3/tutorial/modules.html – kkuilla

+0

爲什麼你想知道?出於好奇,或者你想在'site-packages'中手動擺弄;後者是非常不推薦的。 – Evert

回答

1

並非所有的時間。

除非您必須手動調試模塊或進行安裝,否則最好不要試圖將目錄結構與模塊路徑進行比較。

有時,您的PYTHONPATH將被擴展爲包含子目錄site-packages,然後會有一個額外的子目錄。

其他時候,可以有一個__init__.py文件中pythonds/basic/目錄(有可能的是),可以包含

from .stack import Stack 

在這種情況下,進口路徑可能是

from pythonds.basic import Stack 
+0

謝謝Evert。我在目錄中檢查了它,發現你寫的是什麼。但是,爲了好奇心,我有一個問題,爲什麼我們在基本目錄中有這樣一個__init__文件?我的意思是當這個「從pythonds.basic.stack導入堆棧」工作完全fien,那麼爲什麼我們再次需要在基本目錄中創建一個額外的__init__文件?任何直覺? – Sunita

+0

'__init __。py'在第一次使用時即被初始化_package_(即從它導入的東西)。 – Alfe

+0

'__init __。py'表示當前目錄可以被當作一個Python包。你可以有一個空的'__init __。py'文件,並將整個目錄(或者至少所有'.py'文件)轉換爲一個包。由於'basic /'子目錄不會被視爲一個包,所以如果沒有'pythonds/basic /'目錄中的'__init __。py'文件,您將無法執行'import pythonds.basic'。但爲此,您可以更好地閱讀上面kkuilla鏈接的文檔。 – Evert

1

你的理解是對的。

import pythonds.basic.stack 

這將使您的腳本訪問模塊中的所有類。而

from pythonds.basic.stack import Stack 

將使您的腳本只能訪問堆棧類。

1

在命令行中,你可以這樣做:

C:\Python27\Lib>pip intall pythonds 

那麼這個模塊可以工作。