本教程將引導您完成安裝和使用 Python 包。html
它將向您展現如何安裝和使用必要的工具,並就最佳作法作出強烈推薦。請記住, Python 用於許多不一樣的目的。準確地說,您但願如何管理依賴項可能會根據 您如何決定發佈軟件而發生變化。這裏提供的指導最直接適用於網絡服務 (包括 Web 應用程序)的開發和部署,但也很是適合管理任意項目的開發和測試環境。python
註解git
本指南是針對 Python 3 編寫。但若是您因爲某種緣由仍然使用 Python 2.7, 這些指引應該可以正常工做。github
在您進一步以前,請確保您有 Python,而且可從您的命令行中得到。 您能夠經過簡單地運行如下命令來檢查:shell
$ python --version
您應該獲得像 3.6.2
之類的一些輸出。若是沒有 Python,請從 python.org 安裝最新的 3.x 版本,或參考本指南的 安裝 Python 一節。npm
註解json
若是您是新手,您會獲得以下錯誤:windows
>>> python Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'python' is not defined
這是由於此命令要在 shell*(也稱爲 *終端 或 控制檯)中運行。有關使用操做系統的 shell 並和 Python 進行交互的介紹,請參閱面向 Python 新手的 入門教程。bash
另外,您須要確保 pip 是可用的。您能夠經過運行如下命令來檢查:網絡
$ pip --version
若是您使用 python.org 或 Homebrew 的安裝程序來安裝 Python,您應該已經有 pip 了。 若是您使用的是Linux,並使用操做系統的包管理器進行安裝,則可能須要單獨 安裝 pip。
Pipenv 是 Python 項目的依賴管理器。若是您熟悉 Node.js 的 npm 或 Ruby 的 bundler,那麼它們在思路上與這些工具相似。儘管 pip 能夠安裝 Python 包, 但仍推薦使用 Pipenv,由於它是一種更高級的工具,可簡化依賴關係管理的常見使用狀況。
使用 pip
來安裝 Pipenv:
$ pip install --user pipenv
註解
這進行了 用戶安裝,以防止破壞任何系統範圍的包。若是安裝後, shell 中沒有pipenv
,則須要將 用戶基礎目錄 的 二進制文件目錄添加到 PATH
中。
在 Linux 和 macOS 上,您能夠經過運行 python -m site --user-base
找到 用戶基礎目錄,而後把 bin
加到目錄末尾。好比,上述命令典型地會打印出~/.local``( ``~
會擴展爲您的家目錄的局對路徑),而後將 ~/.local/bin
添加到 PATH
中。您能夠經過 修改 ~/.profile 永久地設置 PATH
。
在 Windows 上,您經過運行 py -m site --user-site
找到用戶基礎目錄,而後 將 site-packages
替換爲 Scripts
。好比,上述命令可能返回爲C:\Users\Username\AppData\Roaming\Python36\site-packages
,而後您須要在PATH
中包含 C:\Users\Username\AppData\Roaming\Python36\Scripts
。 您能夠在 控制面板 中永久設置用戶的 PATH
。您可能須要登出 PATH
更改才能生效。
Pipenv 管理每一個項目的依賴關係。要安裝軟件包時,請更改到您的項目目錄(或只是本教程中的 一個空目錄)並運行:
$ cd myproject
$ pipenv install requests
Pipenv 將在您的項目目錄中安裝超讚的 Requests 庫併爲您建立一個 Pipfile。 Pipfile
用於跟蹤您的項目中須要從新安裝的依賴,例如在與他人共享項目時。 您應該獲得相似的輸出(儘管顯示的確切路徑會有所不一樣):
Creating a Pipfile for this project...
Creating a virtualenv for this project...
Using base prefix '/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6'
New python executable in ~/.local/share/virtualenvs/tmp-agwWamBd/bin/python3.6
Also creating executable in ~/.local/share/virtualenvs/tmp-agwWamBd/bin/python
Installing setuptools, pip, wheel...done.
Virtualenv location: ~/.local/share/virtualenvs/tmp-agwWamBd
Installing requests...
Collecting requests
Using cached requests-2.18.4-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests)
Using cached idna-2.6-py2.py3-none-any.whl
Collecting urllib3<1.23,>=1.21.1 (from requests)
Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Using cached chardet-3.0.4-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests)
Using cached certifi-2017.7.27.1-py2.py3-none-any.whl
Installing collected packages: idna, urllib3, chardet, certifi, requests
Successfully installed certifi-2017.7.27.1 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22
Adding requests to Pipfile's [packages]...
P.S. You have excellent taste! ✨ 🍰 ✨
如今安裝了 Requests,您能夠建立一個簡單的 main.py
文件來使用它:
import requests response = requests.get('https://httpbin.org/ip') print('Your IP is {0}'.format(response.json()['origin']))
而後您就可使用 pipenv run
運行這段腳本:
$ pipenv run python main.py
您應該獲取到相似的輸出:
Your IP is 8.8.8.8
使用 $ pipenv run
可確保您的安裝包可用於您的腳本。咱們還能夠生成一個新的 shell, 確保全部命令均可以使用 $ pipenv shell
訪問已安裝的包。
恭喜,您如今知道如何安裝和使用Python包了! ✨ 🍰 ✨
virtualenv 是一個建立隔絕的Python環境的 工具。virtualenv建立一個包含全部必要的可執行文件的文件夾,用來使用Python工程所需的包。
它能夠獨立使用,代替Pipenv。
經過pip安裝virtualenv:
$ pip install virtualenv
測試您的安裝:
$ virtualenv --version
$ cd my_project_folder $ virtualenv venv
virtualenv venv
將會在當前的目錄中建立一個文件夾,包含了Python可執行文件, 以及 pip
庫的一份拷貝,這樣就能安裝其餘包了。虛擬環境的名字(此例中是 venv
) 能夠是任意的;若省略名字將會把文件均放在當前目錄。
在任何您運行命令的目錄中,這會建立Python的拷貝,並將之放在叫作 venv
的文件中。
您能夠選擇使用一個Python解釋器(好比``python2.7``):
$ virtualenv -p /usr/bin/python2.7 venv
或者使用``~/.bashrc``的一個環境變量將解釋器改成全局性的:
$ export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7
$ source venv/bin/activate
當前虛擬環境的名字會顯示在提示符左側(好比說 (venv)您的電腦:您的工程 用戶名$)以讓您知道它是激活的。從如今起,任何您使用pip安裝的包將會放在 ``venv
文件夾中, 與全局安裝的Python隔絕開。
像日常同樣安裝包,好比:
$ pip install requests
$ deactivate
這將會回到系統默認的Python解釋器,包括已安裝的庫也會回到默認的。
要刪除一個虛擬環境,只需刪除它的文件夾。(要這麼作請執行 rm -rf venv
)
而後一段時間後,您可能會有不少個虛擬環境散落在系統各處,您將有可能忘記它們的名字或者位置。
運行帶 --no-site-packages
選項的 virtualenv
將不會包括全局安裝的包。 這可用於保持包列表乾淨,以防之後須要訪問它。(這在 virtualenv
1.7及以後是默認行爲)
爲了保持您的環境的一致性,「冷凍住(freeze)」環境包當前的狀態是個好主意。要這麼作,請運行:
$ pip freeze > requirements.txt
這將會建立一個 requirements.txt
文件,其中包含了當前環境中全部包及 各自的版本的簡單列表。您可使用 pip list
在不產生requirements文件的狀況下, 查看已安裝包的列表。這將會使另外一個不一樣的開發者(或者是您,若是您須要從新建立這樣的環境) 在之後安裝相同版本的相同包變得容易。
$ pip install -r requirements.txt
這能幫助確保安裝、部署和開發者之間的一致性。
最後,記住在源碼版本控制中排除掉虛擬環境文件夾,可在ignore的列表中加上它。 (查看 版本控制忽略)
virtualenvwrapper 提供了一系列命令使得和虛擬環境工做變得愉快許多。它把您全部的虛擬環境都放在一個地方。
安裝(確保 virtualenv 已經安裝了):
$ pip install virtualenvwrapper
$ export WORKON_HOME=~/Envs $ source /usr/local/bin/virtualenvwrapper.sh
對於Windows,您可使用 virtualenvwrapper-win 。
安裝(確保 virtualenv 已經安裝了):
$ pip install virtualenvwrapper-win
在Windows中,WORKON_HOME默認的路徑是 %USERPROFILE%\Envs 。
$ mkvirtualenv my_project
這會在 ~/Envs
中建立 my_project
文件夾。
$ workon my_project
或者,您能夠建立一個項目,它會建立虛擬環境,並在 $WORKON_HOME
中建立一個項目目錄。 當您使用 workon myproject
時,會 cd
到項目目錄中。
$ mkproject myproject
virtualenvwrapper 提供環境名字的tab補全功能。當您有不少環境, 而且很難記住它們的名字時,這就顯得頗有用。
workon
也能中止您當前所在的環境,因此您能夠在環境之間快速的切換。
$ deactivate
$ rmvirtualenv my_project
lsvirtualenv
cdvirtualenv
site-packages
。
cdsitepackages
site-packages
目錄中。
lssitepackages
site-packages
目錄中的內容。
有了 virtualenv-burrito , 您就能使用單行命令擁有virtualenv + virtualenvwrapper的環境。
當您 cd
進入一個包含 .env
的目錄中,就會 autoenv 自動激活那個環境。
使用 brew
在Mac OS X上安裝它:
$ brew install autoenv
在Linux上:
$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc