盤點一下 在Python中安裝包的三種方法


非商業轉載,來自簡書-虞大膽的嘰嘰喳喳-傑作的:在Python中安裝包的三種方法 - 簡書

最近一段時間都在學習 Python3(如果你想部署 Python3 的開發環境,可參考《是時候配置一個Python3的開發環境了》),乘此機會重新回顧了 Python2 的相關知識,在 Python 中,如果想引入第三方包和庫,可以通過工具安裝,那么這些安裝工具背后做了什么是我非常關心的,這篇本文解釋了相關知識:

  • Python 有多少種類型的包(Python 歷史實在太悠久了)。
  • Python 包安裝工具有哪些。
  • 安裝第三方包后,生成了哪些文件。
  • 如何將 Python 代碼打包成一個包(要基於 Python 包管理工具),該主題不是本文重點。

下面這張圖簡單解釋了包之間的關系:

結構關系

  • 開發者開發包需要遵循標准,然后發布到 Pypi 中,下一篇文章會描述。
  • 包使用者可以使用多種工具從 Pypi 中下載包(本文的重點)。
  • Pypi 包含 Meta 信息和源代碼倉庫。

在我學習 PHP 的時候,沒有一種很好的包安裝工具(現在可以使用 Composer),而 Python 在標准化方面做的更好。

再一次申明

  • 本文沒有在 Python 3 環境下測試。
  • 本文知識點可能陳舊,比如 Python Pypi 官方已做了很大改變。

python 有多種類型的包工具

  • Distutils:Python 標准的包管理工具,擴展性不夠。
  • Setuptools:比 Distutils 提供了更多的功能,雖然不是官方的,但卻是事實上的標准。
  • Distribute:是 Setuptools 的一個分支,目前已經退出了歷史舞台。
  • Distutils2:又一個被廢棄的標准。

這些工具本來就是 Python 的一個包,如果開發者想編寫、發布一個包,必須基於這些包進行開發。

三種類型的包

  • tar.gz
  • egg
  • whell

開發者可以基於 Distutils 或 Setuptools 生成這三種類型的包。

安裝包

(1)源碼安裝

可以手動下載第三方包,然后手動安裝。

# wget "https://files.pythonhosted.org/packages/96/66/43e6df87373557553be2b4343db27d008c6dcefa110ccff38cba1459ca07/ywdblogmath-0.1.tar.gz"
# tar xvf ywdblogmath-0.1.tar.gz 
# cd ywdblogmath-0.1/ 
# python setup.py install 

安裝或更新文件如下:

  • /usr/local/lib/python2.7/dist-packages/easy-install.pth
  • /usr/local/lib/python2.7/dist-packages/ywdblogmath-0.1-py2.7.egg

某些被安裝的包可能包含 C 代碼,所以需要 gcc 這樣的工具編譯。

(2)easy_install

如果想要使用 easy_install 安裝第三方包,需要先安裝 setuptools,如果本機沒有安裝,可以采用源碼方式安裝,比如:

https://pypi.org/project/setuptools/ 下載 .zip 包
# python setup.py  install

easy_install 支持從 Pypi(tar.gz或egg包)、URL、本地目錄安裝軟件包:

# 從 Pypi 安裝最新的包,可能是 tar.gz 或 egg 包
$ easy_install  ywdblogmath 

# 安裝 tar.gz 類型的包
$ easy_install "https://files.pythonhosted.org/packages/96/66/43e6df87373557553be2b4343db27d008c6dcefa110ccff38cba1459ca07/ywdblogmath-0.1.tar.gz" 

# 安裝 egg 包
# easy_install "https://files.pythonhosted.org/packages/b0/fe/1fef363672c1e179de61ff1519aed6a3d68200b4cad0536b6d96b08cc5e9/ywdblogmath-0.3-py2.7.egg" 

# 本地目錄包含 ywdblogmath 的源碼 
$ easy_install /root/python

如果安裝的是一個 tar.gz 或 egg 的壓縮包,安裝后會出現相關文件,如下:

  • /usr/local/lib/python2.7/dist-packages/easy-install.pth(文件更新)
  • /usr/local/lib/python2.7/dist-packages/ywdblogmath-0.1-py2.7.egg(文件新增)

特別說明:

  • easy_install 只能安裝包,不能卸載包。
  • easy_install 不能安裝 wheel 格式的包(pip 可以,但 pip 不能安裝 egg 格式的包)

(3)pip

如果本機沒有安裝 pip,可以使用 easy_install 工具安裝。

pip 常用命令:

# pip list 
# pip install ywdblogmath 
# pip install ywdblogmath -U 
# pip show ywdblogmath 

安裝 tar.gz 包:

$ pip install "https://files.pythonhosted.org/packages/96/66/43e6df87373557553be2b4343db27d008c6dcefa110ccff38cba1459ca07/ywdblogmath-0.1.tar.gz"  

安裝后會出現相關文件,如下:

  • /usr/local/lib/python2.7/dist-packages/ywdblogmath(新增目錄)
  • /usr/local/lib/python2.7/dist-packages/ywdblogmath-0.1-py2.7.egg-info(新增文件)

安裝 wheel 包:

$ pip install "https://files.pythonhosted.org/packages/5f/ca/6624a4b42be2df78f51043d2282944e78dc939066a3da07dfdb949cd6d3e/ywdblogmath-0.4-py2-none-any.whl"

安裝后會出現相關文件,如下:

  • /usr/local/lib/python2.7/dist-packages/ywdblogmath (新增目錄)
  • /usr/local/lib/python2.7/dist-packages/ywdblogmath-0.4.dist-info(新增文件)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM