真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何搭建Python項(xiàng)目虛擬環(huán)境

如何搭建Python項(xiàng)目虛擬環(huán)境,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司是一家專注于做網(wǎng)站、成都做網(wǎng)站與策劃設(shè)計(jì),鄂城網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鄂城等地區(qū)。鄂城做網(wǎng)站價(jià)格咨詢:028-86922220

virtualenv

virtualenv 是一個(gè)創(chuàng)建隔絕的 Python 環(huán)境的工具。它會(huì)創(chuàng)建一個(gè)包含所有必要的可執(zhí)行文件的文件夾,用來使用 Python 工程所需要的包。換句話說,我們可以用 virtualenv 給各個(gè)項(xiàng)目創(chuàng)建各自的 Python 環(huán)境,各個(gè)的環(huán)境之間安裝的包相互獨(dú)立,互不影響。通過激活 avtive 相應(yīng)的 Python 環(huán)境來使用相應(yīng)的 Python 環(huán)境。這里為了方便管理不同的 Python 環(huán)境,我們使用 virtualenvwrapper 來對(duì) Python 虛擬環(huán)境進(jìn)行管理。

安裝和配置

virtualenv 和 virtualenvwrapper 的安裝很簡(jiǎn)單,一條命令即可:

pip install virtualenv  # 安裝virtualenv
pip install virtualenvwrapper # 安裝virtualenvwrapper

virtualenv 是不需要配置的,它的使用直接是在項(xiàng)目文件夾里執(zhí)行命令 virtualenv proEnv ,就會(huì)在當(dāng)前項(xiàng)目目錄下生成proEnv的目錄,目錄下會(huì)包含 bin,include,lib,local 這四個(gè)文件夾和一個(gè) pip-selfcheck.json 文件。當(dāng)該虛擬環(huán)境被激活后 source proEnv/bin/activate ,所有執(zhí)行的 pip 安裝程序都會(huì)安裝在當(dāng)前虛擬環(huán)境文件夾 proEnv 中。不過這樣就導(dǎo)致下面的問題:

  1. 不方便管理--激活,消活 deactivate ,環(huán)境切換等

  2. 無法重用--存放在指定項(xiàng)目目錄下

而 virtualenvwrapper 能完美解決這些問題。

virtualenvwrapper 的配置如下:

# 1.在~/.bashrc文件結(jié)尾添加下面(根據(jù)特定環(huán)境而定)
source /usr/local/bin/virtualenvwrapper.sh

# 2. 重新加載配置
source $HOME/.bashrc

常用命令

# 創(chuàng)建環(huán)境    
mkvirtualenv proEnv [-p python3.7]  # 在$HOME/.virtualenvs/目錄下創(chuàng)建項(xiàng)目python環(huán)境

# 列舉所有環(huán)境
lsvirtualenv

# 切換環(huán)境
workon proEnv

# 退出環(huán)境
deactivate

# 刪除環(huán)境
revirtualenv proEnv

pipenv

pipenv 是 Pipfile 主要倡導(dǎo)者、requests 作者 Kenneth Reitz 寫的一個(gè)命令行工具,主要包含了 Pipfile、pip、click、requests 和 virtualenv,能夠有效管理 Python 多個(gè)環(huán)境,各種第三方包及模塊。

pipenv 所解決的問題:

  • 不同項(xiàng)目依賴不同的第三方庫、包版本問題( virtualenv 也可以解決)

  • 同一個(gè)項(xiàng)目不同環(huán)境使用不用的第三方庫問題(比如 autopep8 , pylint , pep8 等只有開發(fā)環(huán)境需要)

pipenv的特性:

  • pipenv 集成了 pip,virtualenv 兩者的功能,且完善了兩者的一些缺陷。

  • 過去用 virtualenv 管理 requirements.txt 文件可能會(huì)有問題,Pipenv 使用 Pipfile 和 Pipfile.lock,后者存放包的依賴關(guān)系,查看依賴關(guān)系是十分方便。

  • 各個(gè)地方使用了哈希校驗(yàn),無論安裝還是卸載包都十分安全,且會(huì)自動(dòng)公開安全漏洞。

  • 通過加載 .env 文件簡(jiǎn)化開發(fā)工作流程。

  • 支持 Python2 和 Python3,在各個(gè)平臺(tái)的命令都是一樣的。

TIPS:
《Flask Web開發(fā)實(shí)戰(zhàn)》的作者在該書中使用了 Pipenv 作為包管理工具,但是在 2019 年 8 月又發(fā)表了博文不要用 Pipenv,其核心的槽點(diǎn)是 pipenv 在更新第三方依賴庫時(shí)會(huì)更新所有依賴的包,其原因是對(duì)應(yīng)的 packages 都是使用的星號(hào)*,未指定特定的包版本。所以在更新/同步等操作時(shí)會(huì)將所有未指定版本 (使用星號(hào)*)的第三方庫給更新了。這里強(qiáng)烈建議生產(chǎn)環(huán)境的第三方庫都指定版本。

Pipfile.lock 文件更像是當(dāng)前環(huán)境的一個(gè)快照,并不是指之前安裝的第三方依賴庫的版本就是確定的,除非你在 Pipfile 中限定好版本。

安裝

pipenv 的安裝很簡(jiǎn)單,一條命令即可:

# 安裝pipenv包來管理依賴庫
python3 -m pip install pipenv
# 設(shè)置環(huán)境變量,在項(xiàng)目目錄創(chuàng)建虛擬環(huán)境.venv
export PIPENV_VENV_IN_PROJECT=1

常見的 Pipfile 配置如下所示:

[[source]]
name = "aliyun"
url = "https://mirrors.aliyun.com/pypi/simple"
verify_ssl = true

[dev-packages]
autopep8 = "*"
pylint = "*"
pep8 = "*"


[packages]
flask = "==1.1.2"

[requires]
python_version = "3.7"

常見命令

  • 創(chuàng)建虛擬環(huán)境

# 開發(fā)環(huán)境安裝 Pipfile 中第三方依賴
pipenv intall -d
# 生成環(huán)境安裝 Pipfile 中第三方依賴
pipenv install
# 安裝requirements.txt中的依賴庫(項(xiàng)目遷移)
pipenv install -r requirements.txt
# 將pipenv的依賴庫生成requirements.txt(項(xiàng)目遷移)
pipenv run pip freeze > requirements.txt
  • 使用環(huán)境

# 直接在虛擬環(huán)境中運(yùn)行
pipenv run python test.py
# 激活虛擬環(huán)境,再運(yùn)行腳本
pipenv shell && python test.py && exit
  • 安裝卸載第三方依賴

# 安裝第三方依賴庫,并加到 Pipfile 的開發(fā)環(huán)境中
pipenv install -d pylint
# 安裝指定版本的第三方依賴庫,并加到 Pipfile 的生成環(huán)境中
pipenv install Flask==1.1.2
# 卸載第三方依賴庫,并更新 Pipfile
pipenv uninstall Flask
  • 查看依賴包

# 查看當(dāng)前環(huán)境依賴的包
pipenv graph

虛擬環(huán)境的原理

pipenv 是基于 Pipfile,結(jié)合 pip 和 virtualenv來幫助開發(fā)者進(jìn)行依賴管理,所以要想搞明白虛擬環(huán)境的原理其實(shí)只要把 virtualenv 的原理搞明白即可。 這里我們使用 pytyhon:3.7-stretch 鏡像進(jìn)行實(shí)驗(yàn)(不使用alpine鏡像是因?yàn)樗J(rèn)的 shell 是 ash,而不是 bash)。

現(xiàn)象分析

虛擬環(huán)境的特點(diǎn)有二:

  • Python版本固定。即使系統(tǒng)的Python升級(jí)了,虛擬環(huán)境中的仍然不受影響,保留開發(fā)狀態(tài)。

  • 所有Python軟件包,都只在這個(gè)環(huán)境生效。一旦退出,則回到用戶/系統(tǒng)的默認(rèn)環(huán)境中。

所以猜測(cè) virtualenv 是通過改變 shell 的 PATH 來實(shí)現(xiàn)指定的 Python 版本,而對(duì)應(yīng)的軟件包是各自維護(hù)在各自的虛擬環(huán)境目錄中的。

驗(yàn)證手段

  • echo $PATH Python 命令的查找路徑

  • pip list 查看當(dāng)前環(huán)境的依賴庫

  • python -m site 打印當(dāng)前 Python 環(huán)境和 site-packages 相關(guān)調(diào)試信息

驗(yàn)證

# 啟動(dòng)容器
docker run -it --rm python:3.7-stretch bash
# 安裝virtualenv和virtualenvwrapper
pip install virtualenv virtualenvwrapper
# 在 $HOME/.bashrc 文件結(jié)尾添加 source /usr/local/bin/virtualenvwrapper.sh
echo "source /usr/local/bin/virtualenvwrapper.sh" >> $HOME/.bashrc
# 重新加載配置
source $HOME/.bashrc
# 創(chuàng)建虛擬環(huán)境proEnv
mkvirtualenv proEnv

容器當(dāng)前的環(huán)境如下圖所示: 如何搭建Python項(xiàng)目虛擬環(huán)境 使用 workon proEnv 進(jìn)入虛擬環(huán)境 proEnv 后,各參數(shù)如下圖所示: 如何搭建Python項(xiàng)目虛擬環(huán)境

對(duì)比 PATH 的變化,發(fā)現(xiàn) virtualenv 將虛擬環(huán)境的 bin 目錄置于 PATH 的最前方,所以當(dāng)在終端執(zhí)行 python 時(shí),執(zhí)行的是 /root/.virtualenvs/proEnv/bin/python, 而不是 /usr/local/bin/python。這就是為什么 virtualenv 沒有影響本地的 Python 環(huán)境。

對(duì)比 python -m site 的結(jié)果,發(fā)現(xiàn)虛擬環(huán)境的 sys.path 中第三方依賴庫的目錄由 /usr/local/lib/python3.7/site-packages 換成了 /root/.virtualenvs/proEnv/lib/python3.7/site-packages。這就是為什么 pip list 看不見什么軟件包的原因,也是環(huán)境隔離的最大秘密。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


網(wǎng)頁名稱:如何搭建Python項(xiàng)目虛擬環(huán)境
文章源于:http://weahome.cn/article/ihigge.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部