python虛擬環(huán)境

確保你已經(jīng)有了 python 和 pip
在您進(jìn)一步之前,請(qǐng)確保您有 Python,并且可從您的命令行中獲得。 你可以通過(guò)簡(jiǎn)單地運(yùn)行以下命令來(lái)檢查:
$ python --version

你應(yīng)該得到像 3.6.2
之類(lèi)的一些輸出。如果沒(méi)有 Python,請(qǐng)從 python.org 安裝最新的 3.x 版本,或參考本指南的 安裝 Python 一節(jié)。
注解
如果你是新手,你會(huì)得到如下錯(cuò)誤:

pythonTraceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name 'python' is not defined

這是因?yàn)榇嗣钜?shell(也稱(chēng)為 終端控制臺(tái))中運(yùn)行。有關(guān)使用操作系統(tǒng)的 shell 并和 Python 進(jìn)行交互的介紹,請(qǐng)參閱面向 Python 新手的 入門(mén)教程

另外,你需要確保 pip
是可用的。你可以通過(guò)運(yùn)行以下命令來(lái)檢查:
$ pip --version

如果你使用 python.orgHomebrew 的安裝程序來(lái)安裝 Python,你應(yīng)該已經(jīng)有 pip 了。 如果您使用的是Linux,并使用操作系統(tǒng)的包管理器進(jìn)行安裝,則可能需要單獨(dú) 安裝 pip

安裝 Pipenv
Pipenv
是 Python 項(xiàng)目的依賴(lài)管理器。如果您熟悉 Node.js 的 npm 或 Ruby 的 bundler,那么它們?cè)谒悸飞吓c這些工具類(lèi)似。盡管 pip
可以安裝 Python 包, 但仍推薦使用 Pipenv,因?yàn)樗且环N更高級(jí)的工具,可簡(jiǎn)化依賴(lài)關(guān)系管理的常見(jiàn)使用情況。
使用 pip
來(lái)安裝 Pipenv:
$ pip install --user pipenv

注解
這進(jìn)行了 用戶(hù)安裝,以防止破壞任何系統(tǒng)范圍的包。如果安裝后, shell 中沒(méi)有pipenv
,則需要將 用戶(hù)基礎(chǔ)目錄 的 bin
目錄添加到 PATH
中。您可以通過(guò)運(yùn)行python -m site
找到用戶(hù)庫(kù),它將打印包括用戶(hù)基礎(chǔ)的站點(diǎn)信息。例如,在 Linux 上, 這將返回 USER_BASE: '~/.local'
,所以你需要在 PATH
中添加 ~/.local/bin
。 在 Linux 和 MacOS 上,您可以通過(guò) 修改 ~/.profile 永久地設(shè)置 PATH
。 在 Windows 上,您可以在 控制面板 中永久設(shè)置用戶(hù)的 PATH

為你的項(xiàng)目安裝包
Pipenv 管理每個(gè)項(xiàng)目的依賴(lài)關(guān)系。要安裝軟件包時(shí),請(qǐng)更改到您的項(xiàng)目目錄(或只是本教程中的 一個(gè)空目錄)并運(yùn)行:
$ cd myproject$ pipenv install requests

Pipenv 將在您的項(xiàng)目目錄中安裝超贊的 Requests 庫(kù)并為您創(chuàng)建一個(gè) Pipfile
。Pipfile
用于跟蹤您的項(xiàng)目中需要重新安裝的依賴(lài),例如在與他人共享項(xiàng)目時(shí)。 你應(yīng)該得到類(lèi)似的輸出(盡管顯示的確切路徑會(huì)有所不同):
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.6Also creating executable in ~/.local/share/virtualenvs/tmp-agwWamBd/bin/pythonInstalling setuptools, pip, wheel...done.Virtualenv location: ~/.local/share/virtualenvs/tmp-agwWamBdInstalling requests...Collecting requests Using cached requests-2.18.4-py2.py3-none-any.whlCollecting idna<2.7,>=2.5 (from requests) Using cached idna-2.6-py2.py3-none-any.whlCollecting urllib3<1.23,>=1.21.1 (from requests) Using cached urllib3-1.22-py2.py3-none-any.whlCollecting chardet<3.1.0,>=3.0.2 (from requests) Using cached chardet-3.0.4-py2.py3-none-any.whlCollecting certifi>=2017.4.17 (from requests) Using cached certifi-2017.7.27.1-py2.py3-none-any.whlInstalling collected packages: idna, urllib3, chardet, certifi, requestsSuccessfully installed certifi-2017.7.27.1 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22Adding requests to Pipfile's [packages]...P.S. You have excellent taste! ? ?? ?

使用安裝好的包
現(xiàn)在安裝了 Requests,您可以創(chuàng)建一個(gè)簡(jiǎn)單的 main.py
文件來(lái)使用它:
import requestsresponse = requests.get('https://httpbin.org/ip')print('Your IP is {0}'.format(response.json()['origin']))

然后你就可以使用 pipenv run
運(yùn)行這段腳本:
$ pipenv run python main.py

你應(yīng)該獲取到類(lèi)似的輸出:
Your IP is 8.8.8.8

使用 $ pipenv run
可確保您的安裝包可用于您的腳本。我們還可以生成一個(gè)新的 shell, 確保所有命令都可以使用 $ pipenv shell
訪問(wèn)已安裝的包。

下一步
恭喜,您現(xiàn)在知道如何安裝和使用Python包了! ? ?? ?

更低層次: virtualenv
virtualenv 是一個(gè)創(chuàng)建隔絕的Python環(huán)境的 工具。virtualenv創(chuàng)建一個(gè)包含所有必要的可執(zhí)行文件的文件夾,用來(lái)使用Python工程所需的包。
它可以獨(dú)立使用,代替Pipenv。
通過(guò)pip安裝virtualenv:
$ pip install virtualenv

測(cè)試你的安裝
$ virtualenv --version

基本使用
為一個(gè)工程創(chuàng)建一個(gè)虛擬環(huán)境:

$ cd my_project_folder$ virtualenv my_project

virtualenv my_project
將會(huì)在當(dāng)前的目錄中創(chuàng)建一個(gè)文件夾,包含了Python可執(zhí)行文件, 以及 pip
庫(kù)的一份拷貝,這樣就能安裝其他包了。虛擬環(huán)境的名字(此例中是 my_project
) 可以是任意的;若省略名字將會(huì)把文件均放在當(dāng)前目錄。
在任何你運(yùn)行命令的目錄中,這會(huì)創(chuàng)建Python的拷貝,并將之放在叫做 my_project
的文件中。
你可以選擇使用一個(gè)Python解釋器(比如python2.7):
$ virtualenv -p /usr/bin/python2.7 my_project

或者使用~/.bashrc的一個(gè)環(huán)境變量將解釋器改為全局性的:
$ export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7

要開(kāi)始使用虛擬環(huán)境,其需要被激活:

$ source my_project/bin/activate

當(dāng)前虛擬環(huán)境的名字會(huì)顯示在提示符左側(cè)(比如說(shuō) (my_project)你的電腦:你的工程 用戶(hù)名$) 以讓你知道它是激活的。從現(xiàn)在起,任何你使用pip安裝的包將會(huì)放在 ``my_project
文件夾中, 與全局安裝的Python隔絕開(kāi)。
像平常一樣安裝包,比如:
$ pip install requests

如果你在虛擬環(huán)境中暫時(shí)完成了工作,則可以停用它:

$ deactivate

這將會(huì)回到系統(tǒng)默認(rèn)的Python解釋器,包括已安裝的庫(kù)也會(huì)回到默認(rèn)的。
要?jiǎng)h除一個(gè)虛擬環(huán)境,只需刪除它的文件夾。(要這么做請(qǐng)執(zhí)行 rm -rf my_project

然后一段時(shí)間后,你可能會(huì)有很多個(gè)虛擬環(huán)境散落在系統(tǒng)各處,你將有可能忘記它們的名字或者位置。

其他注意
運(yùn)行帶 --no-site-packages
選項(xiàng)的 virtualenv
將不會(huì)包括全局安裝的包。 這可用于保持包列表干凈,以防以后需要訪問(wèn)它。(這在 virtualenv
1.7及之后是默認(rèn)行為)
為了保持你的環(huán)境的一致性,“冷凍住(freeze)”環(huán)境包當(dāng)前的狀態(tài)是個(gè)好主意。要這么做,請(qǐng)運(yùn)行:
$ pip freeze > requirements.txt

這將會(huì)創(chuàng)建一個(gè) requirements.txt
文件,其中包含了當(dāng)前環(huán)境中所有包及 各自的版本的簡(jiǎn)單列表。你可以使用 “pip list”在不產(chǎn)生requirements文件的情況下, 查看已安裝包的列表。這將會(huì)使另一個(gè)不同的開(kāi)發(fā)者(或者是你,如果你需要重新創(chuàng)建這樣的環(huán)境) 在以后安裝相同版本的相同包變得容易。
$ pip install -r requirements.txt

這能幫助確保安裝、部署和開(kāi)發(fā)者之間的一致性。
最后,記住在源碼版本控制中排除掉虛擬環(huán)境文件夾,可在ignore的列表中加上它。

virtualenvwrapper
virtualenvwrapper 提供了一系列命令使得和虛擬環(huán)境工作變得愉快許多。它把你所有的虛擬環(huán)境都放在一個(gè)地方。
安裝(確保 virtualenv 已經(jīng)安裝了):
$ pip install virtualenvwrapper$ export WORKON_HOME=~/Envs$ source /usr/local/bin/virtualenvwrapper.sh

(virtualenvwrapper 的完整安裝指引.)
對(duì)于Windows,你可以使用 virtualenvwrapper-win
安裝(確保 virtualenv 已經(jīng)安裝了):
$ pip install virtualenvwrapper-win

在Windows中,WORKON_HOME默認(rèn)的路徑是 %USERPROFILE%Envs 。

基本使用
創(chuàng)建一個(gè)虛擬環(huán)境:

$ mkvirtualenv my_project

這會(huì)在 ~/Envs
中創(chuàng)建 my_project
文件夾。
在虛擬環(huán)境上工作:

$ workon my_project

或者,你可以創(chuàng)建一個(gè)項(xiàng)目,它會(huì)創(chuàng)建虛擬環(huán)境,并在 $PROJECT_HOME
中創(chuàng)建一個(gè)項(xiàng)目目錄。 當(dāng)你使用 workon myproject
時(shí),會(huì) cd
-ed 到項(xiàng)目目錄中。
$ mkproject myproject

virtualenvwrapper 提供環(huán)境名字的tab補(bǔ)全功能。當(dāng)你有很多環(huán)境, 并且很難記住它們的名字時(shí),這就顯得很有用。
workon
也能停止你當(dāng)前所在的環(huán)境,所以你可以在環(huán)境之間快速的切換。
停止是一樣的:

$ deactivate

刪除:

$ rmvirtualenv my_project

其他有用的命令
lsvirtualenv

列舉所有的環(huán)境。
cdvirtualenv

導(dǎo)航到當(dāng)前激活的虛擬環(huán)境的目錄中,比如說(shuō)這樣你就能夠?yàn)g覽它的 site-packages

cdsitepackages

和上面的類(lèi)似,但是是直接進(jìn)入到 site-packages
目錄中。
lssitepackages

顯示 site-packages
目錄中的內(nèi)容。

virtualenvwrapper 命令的完全列表

virtualenv-burrito
有了 virtualenv-burrito , 你就能使用單行命令擁有virtualenv + virtualenvwrapper的環(huán)境。

autoenv
當(dāng)你 cd
進(jìn)入一個(gè)包含 .env
的目錄中,就會(huì) autoenv 自動(dòng)激活那個(gè)環(huán)境。
使用 brew
在Mac OS X上安裝它:
$ brew install autoenv

在Linux上:
$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,179評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,628評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,642評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,444評(píng)論 6 405
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,948評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,185評(píng)論 0 287
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,717評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,602評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,794評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,045評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,418評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,671評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,414評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,750評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容