2014-11-04 62 views
1

我是Python新手,在理解Distutils在安裝和使用純Python包和模塊時扮演的角色時遇到了一些麻煩。我最近下載了Kaltura的Python客戶端以用於其API,並且它帶有標準的Distutils安裝腳本。它還附帶了包含各種模塊本身的源Python腳本。我使用install命令運行了Distutils安裝腳本,並且提供的測試代碼似乎可行,但我無法讓客戶端正確加載並在其他上下文中工作。對於純模塊使用Distutils有什麼意義?

我很困惑Distutils適合在這裏。我已經有了這些模塊,它們是我下載的檔案的一部分。我甚至需要運行Distutils setup/install?我不能直接導入模塊嗎?運行安裝有什麼意義?

不知道這是否會有所幫助,但這裏是安裝腳本:

from distutils.core import setup 

setup(
    name='KalturaClient', 
    version='1.0.0', 
    url='http://www.kaltura.com/api_v3/testme/client-libs.php', 
    packages=['KalturaClient', 'KalturaClient.Plugins'], 
    license='AGPL', 
    description='A Python module for accessing the Kaltura API.', 
    long_description=open('README.txt').read(), 
) 

回答

2

我看到的distutils setup.py基本上爲搬東西到正確的目錄提供了方便。

install命令將所有模塊移動到用戶範圍(或系統範圍內,如果以超級用戶身份運行)可訪問和已知的位置,這樣您在導入模塊時不必關心實際路徑。對於簡單的設置,這不是絕對必要的。但是如果你的設置變得更加複雜,那很好。一些示例:

  • 您有幾個定期更新的模塊用於多個位置。如果沒有安裝,您必須將其複製到項目特定或全局可訪問的目錄中

  • 您對不同的項目有不同的模塊版本。您創建一個virtualenv並使用setup.py安裝到該virtualenv。

手動操作時,這是一個容易出錯的工作,您必須獲取所有路徑並記住正確的路徑。隨着distutils它沒有麻煩。

當然,純手工完成python模塊並不是什麼大事。對於更復雜的模塊,這當然會發生變化,這些模塊綁定到C代碼等。

如果您熟悉Linux發行版,可以將其視爲與發行版的軟件包管理工具(dpkg,rpm等)等效。 )。

此外,pip和PyPI模塊存儲庫使用setup.py來自動下載和安裝Python軟件包。