首頁  >  文章  >  後端開發  >  Python套件(模組)

Python套件(模組)

高洛峰
高洛峰原創
2016-10-19 13:33:241224瀏覽

Python套件管理不同方式的差異

學習Python已經有一段時間,常常會遇到安裝各種套件的問題,一會setup.py, 一會easy_install,一會又是pip,還有一些概念比如distutils , setuptools等等,搞不清楚誰是誰,什麼時候該用什麼,今天就把這些概念澄清一下。

distutils

distutils是Python標準函式庫的一部分,其初衷是為開發者提供一種方便的包裝方式, 同時為使用者提供方便的安裝方式。

例如你創建了一個名為foo的包,包含一個foo.py文件,你想把它打包以便其它人使用。 這時候你需要寫一個setup.py檔:

from distutils.core import setup

setup(name='foo',

version='1.0',

py_modules

version='1.0',

py_modules

oo',

)

然後運行命令

$python setup.py sdist

然後你發現當前目錄下出現一個名為dist的資料夾,裡面有一個foo-1.0.tar.gz的包。 這個包裡有三個文件,foo.py, setup.py, PKG-INFO,前兩個文件和我們之前提到的兩個文件一樣。 PKG-INFO是關於包的一些資訊。然後你就可以把foo-1.0.tar.gz幫別人安裝了。

安裝者要使用這個包時,只需要解壓縮這個foo-1.0.tar.gz文件,再運行命令

$python setup install

這個包就會被自動安裝到系統合適的位置。

setuptools

setuptools 是對 distutils 的增強, 尤其是引入了包依賴管理。

setuptools可以為Python套件建立 egg文件, Python 與 egg 檔案的關係,相當於java與jar套件的關係。

setuptools 提供的 easy_install 腳本可以用來安裝 egg套件。 另外, easy_install 可以自動從 PyPI 下載相關的套件,並完成安裝,升級。

easy_install 提供了多種安裝,升級Python套件的方式,例如:

easy_install SQLObject

easy_install -f http://pythonpaste.org/package_index.html SQLObject

/to/MyPackage-1.2.3.tgz

easy_install /my_downloads/OtherPackage-3.2.1-py2.3.​​egg

easy_install --upgrade PyProtocols

easy_install --upgrade PyProtocols

easy_install --upgrade PyProtocols

後來開發者們覺得了了Distribute 項目,然後2013年8月, Distribute 又合併回setuptools 0.7。

pip

pip 是安裝,管理Python套件的工具。它是對 easy_install 的一種增強。 同樣可以從 PyPI 自動下載,安裝套件。

在pip中,

安裝前所有需要的包都要先下載,所以不會出現安裝了一部分,另一部分沒安裝的情況

所有安裝的包會被跟踪,所以你可以知道為什麼他們被安裝,同時可以卸載。


無需使用 egg 檔案。

🎜使用方式簡單:🎜🎜pip install pkg_name🎜🎜pip uninstall pkg_name🎜🎜🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn