python虛擬環(huán)境以及command not found的解決方式

本教程將引導(dǎo)你完成安裝和使用 Python 包。

它將向你展示如何安裝和使用必要的工具,并就最佳做法做出強(qiáng)烈推薦。請記住, Python 用于許多不同的目的。準(zhǔn)確地說,你希望如何管理依賴項(xiàng)可能會根據(jù) 你如何決定發(fā)布軟件而發(fā)生變化。這里提供的指導(dǎo)最直接適用于網(wǎng)絡(luò)服務(wù) (包括 Web 應(yīng)用程序)的開發(fā)和部署,但也非常適合管理任意項(xiàng)目的開發(fā)和測試環(huán)境。

注解
確保你已經(jīng)有了 Python 和 pip
在您進(jìn)一步之前,請確保您有 Python,并且可從您的命令行中獲得。 你可以通過簡單地運(yùn)行以下命令來檢查:

安裝 Pipenv

Pipenv 是 Python 項(xiàng)目的依賴管理器。如果您熟悉 Node.js 的 npm 或 Ruby 的 bundler,那么它們在思路上與這些工具類似。盡管 pip可以安裝Python包, 但仍推薦使用 Pipenv,因?yàn)樗且环N更高級的工具,可簡化依賴關(guān)系管理的常見使用情況。

使用 pip 來安裝 Pipenv:

 pip install --user pipenv

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

如果安裝完pipenv之后沒有添加環(huán)境變量就會出現(xiàn)command not found,添加環(huán)境變量如下

vi .profile 

在最后一行添加如下代碼:

export PATH=$PATH:~/.local/bin

保存退出,運(yùn)行以下命令使這個文件生效

source .profile

接下來為你的項(xiàng)目安裝包

Pipenv 管理每個項(xiàng)目的依賴關(guān)系。要安裝軟件包時(shí),請更改到您的項(xiàng)目目錄(或只是本教程中的 一個空目錄)并運(yùn)行:

mkdir pipenv
cd pipenv
pipenv install requests

Pipenv 將在您的項(xiàng)目目錄中安裝超贊的 Requests 庫并為您創(chuàng)建一個 Pipfile。 Pipfile 用于跟蹤您的項(xiàng)目中需要重新安裝的依賴,例如在與他人共享項(xiàng)目時(shí)。 你應(yīng)該得到類似的輸出(盡管顯示的確切路徑會有所不同):

Creating a virtualenv for this project…
?New python executable in /root/.local/share/virtualenvs/pipenv-EMLcMOpm/bin/python
Please make sure you remove any previous custom paths from your /root/.pydistutils.cfg file.
Installing setuptools, pip, wheel...done.

Virtualenv location: /root/.local/share/virtualenvs/pipenv-EMLcMOpm
Creating a Pipfile for this project…                                             Installing requests…
Collecting requests
  Downloading requests-2.18.4-py2.py3-none-any.whl (88kB)
Collecting certifi>=2017.4.17 (from requests)
  Downloading certifi-2017.11.5-py2.py3-none-any.whl (330kB)
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB)
Collecting idna<2.7,>=2.5 (from requests)
  Downloading idna-2.6-py2.py3-none-any.whl (56kB)
Collecting urllib3<1.23,>=1.21.1 (from requests)
  Downloading urllib3-1.22-py2.py3-none-any.whl (132kB)
Installing collected packages: certifi, chardet, idna, urllib3, requests
Successfully installed certifi-2017.11.5 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22

Adding requests to Pipfile's [packages]…
  PS: You have excellent taste! ? ?? ?
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (2f8679)!

使用安裝好的包
現(xiàn)在安裝了 Requests,您可以創(chuàng)建一個簡單的 main.py 文件來使用它:

import requests
response = requests.get('https://httpbin.org/ip')
print('Your IP is {0}'.format(response.json()['origin']))

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

pipenv run python main.py

輸出如下:

Your IP is 39.106.8.8

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

下一步

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

更低層次: virtualenv

virtualenv 是一個創(chuàng)建隔絕的Python環(huán)境的 工具。virtualenv創(chuàng)建一個包含所有必要的可執(zhí)行文件的文件夾,用來使用Python工程所需的包。

它可以獨(dú)立使用,代替Pipenv。

通過pip安裝virtualenv:

pip install virtualenv

測試你的安裝

virtualenv --version

基本使用

為一個工程創(chuàng)建一個虛擬環(huán)境:

cd my_project_folder
virtualenv my_project

virtualenv my_project將會在當(dāng)前的目錄中創(chuàng)建一個文件夾,包含了Python可執(zhí)行文件, 以及 pip 庫的一份拷貝,這樣就能安裝其他包了。虛擬環(huán)境的名字(此例中是 my_project ) 可以是任意的;若省略名字將會把文件均放在當(dāng)前目錄。

在任何你運(yùn)行命令的目錄中,這會創(chuàng)建Python的拷貝,并將之放在叫做 my_project 的文件中。

你可以選擇使用一個Python解釋器(比如python2.7):

virtualenv -p /usr/bin/python2.7 my_project

或者使用~/.bashrc的一個環(huán)境變量將解釋器改為全局性的:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7

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

source my_project/bin/activate

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

像平常一樣安裝包,比如:

pip install requests

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

deactivate

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

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

其他注意

運(yùn)行帶 --no-site-packages 選項(xiàng)的 virtualenv 將不會包括全局安裝的包。 這可用于保持包列表干凈,以防以后需要訪問它。(這在 virtualenv 1.7及之后是默認(rèn)行為)

為了保持你的環(huán)境的一致性,“冷凍住(freeze)”環(huán)境包當(dāng)前的狀態(tài)是個好主意。要這么做,請運(yùn)行:

pip freeze > requirements.txt

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

pip install -r requirements.txt

這能幫助確保安裝、部署和開發(fā)者之間的一致性。

最后,記住在源碼版本控制中排除掉虛擬環(huán)境文件夾,可在ignore的列表中加上它。

virtualenvwrapper

virtualenvwrapper 提供了一系列命令使得和虛擬環(huán)境工作變得愉快許多。它把你所有的虛擬環(huán)境都放在一個地方。

安裝(確保 virtualenv 已經(jīng)安裝了):

pip install virtualenvwrapper
export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh

(virtualenvwrapper 的完整安裝指引.)

對于Windows,你可以使用 virtualenvwrapper-win 。

安裝(確保 virtualenv 已經(jīng)安裝了):

pip install virtualenvwrapper-win

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

基本使用

1.創(chuàng)建一個虛擬環(huán)境:

mkvirtualenv my_project

這會在 ~/Envs 中創(chuàng)建 my_project 文件夾。

2.在虛擬環(huán)境上工作:

workon my_project

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

mkproject myproject

virtualenvwrapper提供環(huán)境名字的tab補(bǔ)全功能。當(dāng)你有很多環(huán)境, 并且很難記住它們的名字時(shí),這就顯得很有用。

workon也能停止你當(dāng)前所在的環(huán)境,所以你可以在環(huán)境之間快速的切換。

3.停止是一樣的:

deactivate

4.刪除:

rmvirtualenv my_project

其他有用的命令

workon  虛擬環(huán)境名   # 進(jìn)入虛擬環(huán)境,可以敲完workon之后tab兩下查看所有的虛擬環(huán)境
lsvirtualenv  #列舉所有的虛擬環(huán)境,我更傾向于workon+tab的方式
cdvirtualenv  #導(dǎo)航到當(dāng)前激活的虛擬環(huán)境的目錄中,比如說這樣你就能夠?yàn)g覽它的 site-packages 。
cdsitepackages  #和上面的類似,但是是直接進(jìn)入到 site-packages 目錄中。
lssitepackages  #顯示 site-packages 目錄中的內(nèi)容。

<pre>

所有命令的使用方法

virtualenv-burrito

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

autoenv

當(dāng)你 cd 進(jìn)入一個包含 .env 的目錄中,就會 autoenv 自動激活那個環(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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容