摘要:可通過(guò)以下命令生成文件運(yùn)行虛擬環(huán)境可使用以下命令來(lái)運(yùn)行項(xiàng)目或者啟動(dòng)虛擬環(huán)境的環(huán)境直接運(yùn)行并不會(huì)出現(xiàn)命令行,是應(yīng)為沒有配置環(huán)境變量。
本文最早發(fā)布與個(gè)人博客:http://www.pylixm.cc
最近常看到pipenv這個(gè)管理工具,今天有時(shí)間查了下,是 Kennethreitz 大神的作品,看了下github的倉(cāng)庫(kù),是2017年1月份創(chuàng)建的,僅僅一年的時(shí)間變獲得了7k+的收藏,最新一次的提交時(shí)間為2天前,可見該倉(cāng)庫(kù)活躍程度。自己之前寫過(guò)一篇文章《使用 pyenv + virtualenv 打造多版本python開發(fā)環(huán)境》,遺留個(gè)問(wèn)題,一直沒有找到合理的同時(shí)管理python和python依賴包的工具,試用了下 pipenv,可以說(shuō)完美的解決了python版本及包的管理問(wèn)題。并且pipebv 還是Python.org正式推薦的python包管理工具。原文如下:
Pipenv — the officially recommended Python packaging tool from Python.org, free (as in freedom).
那么接下來(lái),分享下我的試用過(guò)程,供大家參考:
準(zhǔn)備工作 試用環(huán)境及相關(guān)文檔環(huán)境
pipenv 9.0.1
python3.6
python2.7
文檔
github倉(cāng)庫(kù)地址:pipenv
pipenv 官方文檔
pipenv 基本概念理解之前我們使用pip + virtualenv 來(lái)管理python依賴包,使用 --python=參數(shù)來(lái)區(qū)分python版本(不再使用pyenv,減少包依賴)。而pipenv的思路簡(jiǎn)單理解便是把pip和virutalenv 2個(gè)工具統(tǒng)一起來(lái),使用 pipenv 來(lái)代替。
pipenv 使用 Pipfile 來(lái)代替 requirement.txt 文件記錄python包。
增加了Pipfile.lock 文件來(lái)鎖定python軟件的包名及版本,以及其依賴關(guān)系的列表。
它參考了其他語(yǔ)言的包管理工具(bundler, composer, npm, cargo, yarn, etc.),旨在將最好的包管理工具帶入python世界。
pipenv 功能試用 pipenv 安裝 普通安裝pipenv 可使用 pip 直接安裝。
pip install pipenv
作者推薦在python3下邊安裝,會(huì)提高與virtualenv的兼容性。
The use of Python 3 is highly preferred over Python 2, when installing Pipenv. Compatibility with three virtualenvs is greatly improved when using Python 3 as the installation target. —Kenneth Reitz用戶模式安裝
為防止和系統(tǒng)python庫(kù)產(chǎn)生影響,可使用此種方案安裝。
pip install --user pipenv
pip 默認(rèn)安裝包路徑為/usr/local/lib/python2.7/site-packages。此模式下,pip安裝包保存路徑為用戶庫(kù)路徑,一般為/Users/pylixm/Library/Python/3.6/lib/python/site-packages, 可使用命令python3 -m site --user-site 具體查看。如果在安裝后你的shell中pipenv不可用,你需要把用戶庫(kù)的二進(jìn)制目錄/Users/pylixm/Library/Python/3.6/bin添加到你的PATH中。
pipenv 使用 初始化虛擬環(huán)境執(zhí)行pipenv install,創(chuàng)建虛擬環(huán)境,如下:
~/laboratory/pip_test_project ? 20:42:10 $ pipenv install Creating a virtualenv for this project… ?New python executable in /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90/bin/python2.7 Also creating executable in /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90/bin/python Installing setuptools, pip, wheel...done. Virtualenv location: /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90 Creating a Pipfile for this project… Pipfile.lock not found, creating… Locking [dev-packages] dependencies… Locking [packages] dependencies… Updated Pipfile.lock (c23e27)! Installing dependencies from Pipfile.lock (c23e27)… ? ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00 To activate this project"s virtualenv, run the following: $ pipenv shell
從打印信息可見,它在目錄用戶目錄.local下創(chuàng)建了個(gè)和項(xiàng)目同名的虛擬環(huán)境(可通過(guò)配置環(huán)境變量來(lái)自定義虛擬環(huán)境目錄,export WORKON_HOME=~/.venvs),python使用的是默認(rèn)的python2.7 。
可通過(guò)參數(shù)--two 和--three 來(lái)泛指python版本,也可通過(guò)--python 3.5 來(lái)明確知道python版本,但是這些參數(shù)的前提是你系統(tǒng)上有此python版本,否則會(huì)報(bào)如下錯(cuò)誤:
$ pipenv --python 3.5 Warning: Python 3.5 was not found on your system… You can specify specific versions of Python with: $ pipenv --python path/to/python
有點(diǎn)像 virtualenv 的 --python參數(shù)。
初始化好虛擬環(huán)境后,會(huì)在項(xiàng)目目錄下生成2個(gè)文件Pipfile和Pipfile.lock。為pipenv包的配置文件,代替原來(lái)的 requirement.txt。項(xiàng)目提交時(shí),可將Pipfile 文件和Pipfile.lock文件受控提交,待其他開發(fā)克隆下載,根據(jù)此Pipfile 運(yùn)行命令pipenv install [--dev]生成自己的虛擬環(huán)境。
Pipfile.lock 文件是通過(guò)hash算法將包的名稱和版本,及依賴關(guān)系生成哈希值,可以保證包的完整性。
安裝python模塊安裝 requests 模塊:
$ pipenv install requests Installing requests… Collecting requests Using cached requests-2.18.4-py2.py3-none-any.whl Collecting certifi>=2017.4.17 (from requests) Using cached certifi-2017.11.5-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 Installing collected packages: certifi, idna, urllib3, chardet, 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)!
可通過(guò)命令pipenv graph 查看已安裝模塊,同時(shí)可查看他們直接的相互依賴情況。
$ pipenv graph requests==2.18.4 - certifi [required: >=2017.4.17, installed: 2017.11.5] - chardet [required: <3.1.0,>=3.0.2, installed: 3.0.4] - idna [required: >=2.5,<2.7, installed: 2.6] - urllib3 [required: >=1.21.1,<1.23, installed: 1.22]
可通過(guò)以下命令,僅安裝在開發(fā)環(huán)境,
pipenv install --dev requests --three
區(qū)別反映在Pipfile 上為:
[[source]] url = "https://pypi.python.org/simple" verify_ssl = true name = "pypi" [dev-packages] [packages] requests = "*" flask = "==0.10" [requires] python_version = "3.6"
安裝包記錄是在[dev-packages] 部分,還是[packages] 部分。在安裝時(shí),指定--dev參數(shù),則只安裝[dev-packages]下的包,若安裝時(shí)不定指定--dev參數(shù),只會(huì)安裝[packages] 包下面的模塊。
[requires] 下的python在構(gòu)建新的虛擬環(huán)境時(shí),若沒有會(huì)自動(dòng)下載安裝。
pipenv install -r requirements.txt
這樣我們可以重用之前的requirement.txt 文件來(lái)構(gòu)建我們新的開發(fā)環(huán)境,可以把我們的項(xiàng)目順利的遷到pipenv。
可通過(guò)以下命令生成requirements 文件:
pipenv lock -r [--dev] > requirements.txt運(yùn)行虛擬環(huán)境
可使用以下命令來(lái)運(yùn)行項(xiàng)目:
pipenv run python xxx.py
或者啟動(dòng)虛擬環(huán)境的shell環(huán)境:
~/laboratory/pip_test_project $ pipenv shell --anyway Spawning environment shell (/bin/zsh). Use "exit" to leave. source /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90/bin/activate ~/laboratory/pip_test_project $ source /Users/pylixm/.local/share/virtualenvs/pip_test_project-MXA0TC90/bin/activate (pip_test_project-MXA0TC90) ~/laboratory/pip_test_project $ exit ~/laboratory/pip_test_project $ pipenv shell Shell for UNKNOWN_VIRTUAL_ENVIRONMENT already activated. No action taken to avoid nested environments.
直接運(yùn)行pipenv shell 并不會(huì)出現(xiàn)shell命令行,是應(yīng)為沒有配置環(huán)境變量。還需要進(jìn)一步研究,貌似需要配置環(huán)境變了,一直沒找到。
pipenv 提供了.env 文件,放在項(xiàng)目目錄下,提供項(xiàng)目所需的環(huán)境變量,運(yùn)行pipenv shell 時(shí),會(huì)自動(dòng)加載。
刪除虛擬環(huán)境及包刪除包:
pipenv uninstall reuqests
刪除虛擬環(huán)境:
pipenv --rm總結(jié)
pipenv 完美的解決了python的包和版本的管理。
并對(duì)包之間的依賴關(guān)系也管理起來(lái),方便了開發(fā)者構(gòu)建自己的開發(fā)運(yùn)行環(huán)境。
時(shí)間有限,以上列舉的僅為部分功能,更多的強(qiáng)大功能詳見官方文檔。
參考https://docs.pipenv.org/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41252.html
摘要:的把最新型最先進(jìn)的虛擬環(huán)境吵得火熱。進(jìn)入后,你會(huì)發(fā)現(xiàn)用也是能生效的。但是注意進(jìn)入環(huán)境后千萬(wàn)不要用退出,而應(yīng)該用退出。最佳解決方案是因?yàn)檫@種在其他地方也常見,一般都是沒有在環(huán)境里安裝的問(wèn)題。 2018的PyCon把最新型最先進(jìn)的Python虛擬環(huán)境pipenv吵得火熱??戳讼陆榻B感覺真的很好用,它在virtualenv的基礎(chǔ)上包裝了一些更便捷的功能,解決了很多很多virtualenv欠缺...
摘要:根據(jù)中華人民共和國(guó)信息產(chǎn)業(yè)部第十二次部務(wù)會(huì)議審議通過(guò)的非經(jīng)營(yíng)性互聯(lián)網(wǎng)信息服務(wù)備案管理辦法精神,在中華人民共和國(guó)境內(nèi)提供非經(jīng)營(yíng)性互聯(lián)網(wǎng)信息服務(wù),應(yīng)當(dāng)辦理備案。未經(jīng)備案,不得在中華人民共和國(guó)境內(nèi)從事非經(jīng)營(yíng)性互聯(lián)網(wǎng)信息服務(wù)。 當(dāng)我們開發(fā)了一個(gè)簡(jiǎn)單的 Flask 程序,想把項(xiàng)目部署上線,我們可以選擇傳統(tǒng)的部署方式或者云部署方式把項(xiàng)目部署上線。在本文中,筆者將使用 阿里云輕量應(yīng)用服務(wù)器 安裝 C...
摘要:接收用戶請(qǐng)求并分析請(qǐng)求的。執(zhí)行函數(shù)并生成響應(yīng),返回給瀏覽器。這個(gè)過(guò)程我們稱為注冊(cè)路由,路由負(fù)責(zé)管理和函數(shù)之間的映射,而這個(gè)函數(shù)則被稱為視圖函數(shù)。文件是一個(gè)名為的文本文件,它存儲(chǔ)了項(xiàng)目中提交時(shí)的忽略文件規(guī)則清單。 flask簡(jiǎn)述 Flask 是一個(gè)基于 Python 開發(fā)并且依賴 jinja2 模板和 Werkzeug WSGI 服務(wù)的一個(gè)微型框架,對(duì)于 Werkzeug 本質(zhì)是 Soc...
摘要:前言第一次接觸到是因?yàn)榭吹蕉鱾ゴ笊竦氖褂霉芾砟愕捻?xiàng)目,之前可能和大家的選擇類似使用或者來(lái)管理的包環(huán)境。是針對(duì)的包的多版本管理,通過(guò)將包安裝到一個(gè)模塊來(lái)作為的包虛擬環(huán)境,通過(guò)切換目錄來(lái)實(shí)現(xiàn)不同包環(huán)境間的切換。 前言 第一次接觸到 pipenv 是因?yàn)榭吹紷董明偉大神的《使用pipenv管理你的項(xiàng)目》,之前可能和大家的選擇類似使用 virtualenv 或者 pyenv 來(lái)管理 pyth...
閱讀 1176·2021-11-15 18:14
閱讀 3649·2021-11-15 11:37
閱讀 770·2021-09-24 09:47
閱讀 2457·2021-09-04 16:48
閱讀 2190·2019-08-30 15:53
閱讀 2396·2019-08-30 15:53
閱讀 401·2019-08-30 11:20
閱讀 1247·2019-08-29 16:08