python 包管理和virturlenv
python 包管理工具
?
Python當前的包管理工具鏈是 easy_install/pip + distribute/setuptools + distutils,顯得較為混亂。
而將來的工具鏈組合非常簡單:pip + distutils2。
?
1、distutils:Python 自帶的基本安裝工具,適用于非常簡單的應用場景,使用:
- 為項目創建 setup.py 腳本;
- 執行 setup.py install 可進行安裝;
?
2、setuptools:針對 distutils 做了大量擴展,尤其是加入了包依賴機制,在部分 Python 子社區已然是事實上的標準。
?
3、distribute:由于 setuptools 開發進度緩慢,不支持 Python 3,代碼混亂,一幫程序員另起爐灶,重構代碼,增加功能,希望能夠取代 setuptools 并被接納為官方標準庫,他們非常努力,在很短的時間便讓社區接受了 distribute。
?
4、easy_install:setuptools 和 distribute 自帶的安裝腳本,也就是一旦 setuptools 或 distribute 安裝完畢,easy_install 也便可用。最大的特點是自動查找 Python 官方維護的包源 PyPI,安裝第三方 Python 包非常方便。使用:
- setuptools / distribute 都只是擴展了 distutils;
- easy_install [PACKAGE_NAME] 自動從 PyPI 查找/下載/安裝指定的包。
- easy_install 也有很多不足:安裝事務是非原子操作,只支持 svn,沒有提供卸載命令, 安裝一系列包時需要寫腳本。
?
5、distutils2:setuptools 和 distribute 的誕生是因為 distutils 的不濟,進而導致目前分化的狀況。而 Guido 并未接納 distribute 為官方標準,并說明了原因。它將成為 Python 3.3 的標準庫 packaging,并在其它版本中以 distutils2 的身份出現。換句話說,它和 pip 將聯手結束目前混亂的狀況。
?
6、pip 是 easy_install 的一個替換品。pip 的安裝需要setuptools 或者 distribute,distribute是setuptools的取代(Setuptools包后期不再維護了),如果你使用的是Python3.x那么就只能使用distribute因為Python3.x不支持setuptools。
下面來看一下pip的使用:
安裝特定版本的package,通過使用==, >=, <=, >, <來指定一個版本號,例如安裝Markdown包:
pip install 'Markdown<2.0' pip install 'Markdown>2.0,<2.0.3'包的安裝路徑:/usr/local/lib/python2.7/dist-packages。
?
升級包到當前最新的版本,可以使用-U 或者 --upgrade
pip install -U Markdown?
卸載包
pip uninstall Markdown?
查詢包
pip search "multiprocessing"?
列出安裝的packages
pip freeze?
?
?
virtualenv
在開發Python應用程序的時候,系統安裝的Python只有一個版本。所有第三方的包都會被pip安裝到Python的site-packages目錄下。
如果我們要同時開發多個應用程序,那這些應用程序都會共用一個Python,如果應用A需要jinja 2.7,而應用B需要jinja 2.6怎么辦?
這種情況下,每個應用可能需要各自擁有一套“獨立”的Python運行環境。virtualenv就是用來為一個應用創建一套“隔離”的Python運行環境。
假定我們要開發一個新的項目,需要一套獨立的Python運行環境,可以在項目目錄下執行下面的命令:
virtualenv --no-site-packages venvvirtualenv命令創建一個獨立的Python運行環境,參數--no-site-packages 表示已經安裝到系統Python環境中的所有第三方包都不會復制過來,這樣,我們就得到了一個不帶任何第三方包的“干凈”的Python運行環境。
?
新建的Python環境被放到當前目錄下的venv目錄。有了venv這個Python環境,可以用source命令進入該環境:
source venv/bin/activate在venv環境下,用pip安裝的包都被安裝到venv這個環境下,系統Python環境不受任何影響。也就是說,venv環境是專門針對myproject這個應用創建的。
?
退出當前的venv環境,使用deactivate命令:
deactivate?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的python 包管理和virturlenv的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux和windows文件名称长度限
- 下一篇: 浅析Windows7的睡眠、休眠、混合睡