亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

我們在開始一個(gè)Python/ target=_blank class=infotextkey>Python項(xiàng)目,而不是幾行簡單的代碼時(shí),我們傾向于開始使用第三方的dependencies.當(dāng)項(xiàng)目越來越大時(shí),我們需要考慮如何有效的管理這些第三方庫。當(dāng)安裝第三方庫時(shí),我們肯定是想安裝在虛擬環(huán)境中。幫助我們保持我們實(shí)際系統(tǒng)環(huán)境的干凈,避免打亂整個(gè)系統(tǒng)python環(huán)境。

我們?yōu)槭裁葱枰猵ython的虛擬環(huán)境?

我們可以使用pip把第三方庫安裝到python項(xiàng)目中。一個(gè)項(xiàng)目中往往要安裝多個(gè),鑒于安裝的第三方庫的各種版本,可能會導(dǎo)致一些兼容和運(yùn)行的問題。

當(dāng)我們在python項(xiàng)目中使用pip install <package name> ,我們是安裝到全局python下的,將會根據(jù)現(xiàn)有的python版本安裝第三方包。

我們可以通過以下命令來查找python的安裝目錄:

python -c "import sys;print('n'.join(sys.path))"
輸出:
C:UsersAdministrator.*AppDataLocalProgramsPythonPython36python36.zip
C:UsersAdministrator.*AppDataLocalProgramsPythonPython36DLLs
C:UsersAdministrator.*AppDataLocalProgramsPythonPython36lib
C:UsersAdministrator.*AppDataLocalProgramsPythonPython36
C:UsersAdministrator.*AppDataLocalProgramsPythonPython36libsite-packages

如果我們使用pip3 install <package name>,將會安裝到python3安裝目錄的單獨(dú)的目錄下。我們可以用以下命令來覆蓋pip3這個(gè)命令:

python2.7 -m pip install <package name>

但是這仍然解決不了我們在全局python下安裝第三方庫的問題,將會出現(xiàn)下列的問題:

  • 不同python項(xiàng)目之間會使用不同版本的第三方庫,可能會導(dǎo)致互相沖突
  • 項(xiàng)目的依賴庫和操作系統(tǒng)的依賴庫會產(chǎn)生沖突,導(dǎo)致出現(xiàn)項(xiàng)目錯(cuò)誤或系統(tǒng)錯(cuò)誤。
  • 多用戶項(xiàng)目將很難實(shí)現(xiàn)。
  • 不同版本python和庫的代碼測試將會是一個(gè)挑戰(zhàn)

為了避免以上的問題,python開發(fā)者使用虛擬環(huán)境。這個(gè)虛擬環(huán)境把安裝的這些第三方庫在一個(gè)隔離的環(huán)境中(目錄內(nèi))保存。

如何創(chuàng)建一個(gè)虛擬環(huán)境

確保你的系統(tǒng)上已經(jīng)安裝python

python --version

然后看一下pip是否也能正常調(diào)用

pip --version

我們需要一個(gè)工具來創(chuàng)建python的虛擬環(huán)境,venv。它是封裝在python3.3+版本以上的python中的。

如果我們使用python2,我們需要手動安裝一個(gè)工具。這是為數(shù)不多的一個(gè)我們需要全局安裝的第三方庫。

python2 -m pip install virtualenv

注意:我們將會在文章中討論很多venv和python3,操作系統(tǒng)環(huán)境不同,可能會導(dǎo)致某些命令的些許不同,某些工具的工作原理也些許不同。

如果你的系統(tǒng)上沒有安裝pip:

sudo apt-get install python-pip
然后安裝virtualenv
pip install virtualenv

我們首先要為項(xiàng)目創(chuàng)建一個(gè)文件夾,并進(jìn)入這個(gè)文件夾:

mkdir my-python-project && cd my-python-project

然后我們再創(chuàng)建虛擬環(huán)境:

python3 -m venv virtualenv
#創(chuàng)建一個(gè)名為virtualenv的虛擬環(huán)境給,可以是任何名字

這將會創(chuàng)建一個(gè)名為virtualenv的目錄,這個(gè)目錄將會包含bin、lib、include文件夾,還有一個(gè)環(huán)境配置文件。

所有的文件都是為了確保,所有的代碼都運(yùn)行在當(dāng)前的虛擬環(huán)境下。這會幫我們把工作環(huán)境和操作系統(tǒng)環(huán)境隔離開來,避免我們之前提到的問題。

為了使用這個(gè)虛擬環(huán)境,我們需要激活它。激活以后,還會更改我們的命令提示符標(biāo)志。這個(gè)標(biāo)志也是為了表明虛擬環(huán)境已經(jīng)激活,python的代碼都是在這個(gè)環(huán)境下執(zhí)行。

#UBUNTU linux系統(tǒng)激活虛擬環(huán)境
$ source env/bin/activate
(virtualenv) $
#windows激活虛擬環(huán)境
E:my-python-projectvirtualenvScripts>activate
(virtualenv)E:my-python-projectvirtualenvScripts>activate

在虛擬環(huán)境下,無法訪問使用全局的第三方庫,在虛擬環(huán)境內(nèi)安裝的庫也無法在外部使用。

在虛擬環(huán)境中,只有pip和setuptools是默認(rèn)安裝的。

激活虛擬環(huán)境后,變量path也會相應(yīng)地發(fā)生改變,以達(dá)到虛擬環(huán)境的目的。

當(dāng)我們完成工作,想切換回操作系統(tǒng)的全局環(huán)境,我們需要使用deactivate退出虛擬環(huán)境。

#linux ubuntu下
(virtualenv) $ deactivate 
$

#windows系統(tǒng)下
(virtualenv) E:my-python-projectvirtualenvScripts>deactivate
E:my-python-projectvirtualenvScripts>

如何管理虛擬環(huán)境下的第三方庫

我們配置了虛擬環(huán)境并激活以后,我們不想在分享項(xiàng)目時(shí),連同使用pip install命令安裝的第三方庫也一起分享。我們想去除我們的虛擬環(huán)境文件夾,但仍然可以在其他的電腦或系統(tǒng)上重新運(yùn)行我們的工作。

為實(shí)現(xiàn)這個(gè)目的,我們可以在項(xiàng)目根目錄下創(chuàng)建一個(gè)requirement文件。假設(shè)我們在虛擬環(huán)境下安裝flask,安裝完成后我們使用pip freeze命令。它將會列出我們已經(jīng)安裝過的庫名和版本號。

(virtualenv) $ pip freeze
click==8.0.3
colorama==0.4.4
dataclasses==0.8
Flask==2.0.2
importlib-metadata==4.8.1
itsdangerous==2.0.1
Jinja2==3.0.2
MarkupSafe==2.0.1
typing-extensions==3.10.0.2
Werkzeug==2.0.2
zipp==3.6.0

我們可以將這個(gè)列表寫到requirement文件中,上傳到git保存,或以任何形式跟他人分享。

(virtualenv) $ pip freeze > requirements.txt

這個(gè)命令也可以更新這個(gè)requirements.txt文件,所以在每次安裝一個(gè)新的第三方庫時(shí),我們都習(xí)慣性的運(yùn)行一下這個(gè)命令,來更新我們的安裝列表。

然后,如果任何人想在他們的電腦上運(yùn)行我們的項(xiàng)目,他們只需要做:

$ cd copied-project/
$ python3 -m venv virtualenv/
$ python3 -m pip install -r requirements.txt

所有的一切都如在我們電腦上運(yùn)行的一樣。

使用pipenv來創(chuàng)建python虛擬環(huán)境

安裝pipenv

pip install pipenv

pipenv基本上是pip的一個(gè)替代工具。它引入了兩個(gè)文件,pipfile用來替換requirements.txt,Pipfile lock(which enables deterministic builds,確定第三方庫的子依賴庫版本的更新的解決方案)

pipenv在機(jī)理上是運(yùn)行pip和virtualenv,但使用一個(gè)命令來簡化操作。

$ cd project_folder
pipenv shell
#如果當(dāng)前目錄沒有虛擬環(huán)境給,會自動創(chuàng)建一個(gè)新的虛擬環(huán)境。
#你可以指定使用python3或python2的版本 --two或--three
#前提是操作系統(tǒng)上也要安裝相應(yīng)版本的python
pipenv shell --two 或 --three

安裝第三方庫,如flask,或numpy

pipenv install flask==0.12.1
pipenv install numpy #也可以不指定版本號

也可以從Version Control system比如git來安裝第三方庫

pipenv install -e git+https://github.com/requests/requests.git#egg=requests

需要注意上面的-e參數(shù)可以使安裝editable,目前對于pipenv來說是必須的。

如果你需要使用pytest來測試項(xiàng)目,但在上線后不需要這個(gè)庫,你可以指定這個(gè)庫僅僅作用于開發(fā)模式 --dev.

pipenv install pytest --dev

--dev將會把第三庫放到pipfile的一個(gè)單獨(dú)的地方【dev-packages】。

如果你現(xiàn)在完成了開發(fā),本地運(yùn)行正常,你想鎖定你的開發(fā)環(huán)境,并轉(zhuǎn)至線上。使用如下命令確保開發(fā)環(huán)境:

pipenv lock

這個(gè)代碼將會創(chuàng)建或更新你的環(huán)境,你無需手動更改編輯。我們也應(yīng)該一直使用自動生成的文件。

lock以后,在production環(huán)境,你需要安裝最新的成功的運(yùn)行環(huán)境。

pipenv install --ignore-pipfile

這個(gè)命令是告訴pipenv,安裝時(shí)忽略pipfile,用pipfile.lock里的列表。pipenv將會創(chuàng)建一模一樣的環(huán)境,包括子依賴庫。

現(xiàn)在,另一個(gè)人想要對代碼做些更改,這種情況下,他得到代碼,包括pipfile,運(yùn)行如下命令

pipenv install --dev

這個(gè)命令將會安裝開發(fā)所需的所有的第三方庫,包括普通的install以及--dev安裝的。

如果沒有指定版本號,install命令就會給第三方包括子依賴庫一個(gè)機(jī)會去升級它們的版本

舉例,現(xiàn)在你開發(fā)用到的一個(gè)第三庫有了版本升級,因?yàn)槟悴恍枰粋€(gè)特定的版本,所以你在install的時(shí)候沒有指定版本號。當(dāng)你運(yùn)行pipenv install時(shí),最新版本的第三方庫會安裝到你的開發(fā)環(huán)境內(nèi)。

然后你對代碼做了一些更改,結(jié)果如預(yù)期一樣。然后你再重復(fù)上面的步驟lock你的環(huán)境。并更新至Production.

pipenv常用的一些命令

#打開一個(gè)第三方庫 
pipenv open flask

將會使用默認(rèn)的editor打開第三方庫的代碼。

無需shell運(yùn)行某個(gè)命令
pipenv run <command>
檢查環(huán)境安全性
pipenv check
刪除某個(gè)庫
pipenv uninstall numpy
刪除所有庫
pipenv uninstall --all
刪除所有開發(fā)時(shí)用到的庫
pipenv uninstall --all-dev

分享到:
標(biāo)簽:項(xiàng)目 python
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定