摘要:安全,廣泛地使用校驗,能夠自動曝露安全漏洞。部分用來設置倉庫地址,部分用來指定項目依賴的包,部分用來指定開發環境需要的包,這樣分開便于管理。參考鏈接新款虛擬環境工具詳解筆記使用指南官方推薦的包管理工具
pipenv 是什么
pipenv 是 python 官方推薦的包管理工具,集成了 virtualenv、pyenv 和 pip 三者的功能于一身,類似于 php 中的 composer。
我們知道,為了方便管理 python 的虛擬環境和庫,通常使用較多的是 virtualenv 、pyenv 和 pip,但是他們不夠好用或者說不夠偷懶。于是 requests 的作者 Kenneth Reitz 開發了用于創建和管理 python 虛擬環境的工具 —- pipenv。
它能夠自動為項目創建和管理虛擬環境,從 Pipfile 文件中添加或者刪除包,同時生成 Pipfile.lock 文件來鎖定安裝包的版本和依賴信息,避免構建錯誤。
pipenv 主要解決了以下問題:
不用再多帶帶使用 virtualenv、pyenv 和 pip 了,現在它們結合到了一起。
不用再維護 requirement.txt 了,使用 Pipfile 和 Pipfile.lock 來代替。
可以在開發環境使用多個 python 版本。
在安裝的 pyenv 條件下,可以自動安裝需要的 python 版本。
安全,廣泛地使用 Hash 校驗,能夠自動曝露安全漏洞。
隨時查看圖形化的依賴關系。
安裝 pipenv由于我的開發環境一直都是 Mac 筆記本,所以這里只介紹在 Mac 環境如何安裝好了。
使用 pip 安裝$ pip install --user pipenv
這個命令在用戶級別(非系統全局)下安裝 pipenv。如果安裝后 shell 提示找不到 pipenv 命令,你需要添加當前 Python 用戶主目錄的 bin 目錄到 PATH 環境變量。如果你不知道 Python 用戶主目錄在哪里,用下面的命令來查看:
$ python -m site --user-base
你會看到類似下面的輸出
/Users/liyafeng/Library/Python/3.6使用 brew 安裝
Mac 下使用 brew 安裝軟件應該是最方便的了,推薦使用:
brew install pipenv
升級 pipenv:
brew upgrade pipenvshell 自動補齊
Linux or Mac 環境下,bash下如果能自動命令補全豈不是更好?請把如下語句追加到.bashrc或者.zshrc即可:
eval "$(pipenv --completion)"常用命令
pipenv 具有的選項:
$ pipenv Usage: pipenv [OPTIONS] COMMAND [ARGS]... Options: --where 顯示項目文件所在路徑 --venv 顯示虛擬環境實際文件所在路徑 --py 顯示虛擬環境Python解釋器所在路徑 --envs 顯示虛擬環境的選項變量 --rm 刪除虛擬環境 --bare 最小化輸出 --completion 完整輸出 --man 顯示幫助頁面 --three / --two 使用Python 3/2創建虛擬環境(注意本機已安裝的Python版本) --python TEXT 指定某個Python版本作為虛擬環境的安裝源 --site-packages 附帶安裝原Python解釋器中的第三方庫 --jumbotron An easter egg, effectively. --version 版本信息 -h, --help 幫助信息
pipenv 可使用的命令參數:
Commands: check 檢查安全漏洞 graph 顯示當前依賴關系圖信息 install 安裝虛擬環境或者第三方庫 lock 鎖定并生成Pipfile.lock文件 open 在編輯器中查看一個庫 run 在虛擬環境中運行命令 shell 進入虛擬環境 uninstall 卸載一個庫 update 卸載當前所有的包,并安裝它們的最新版本
一些例子:
Usage Examples: Create a new project using Python 3.6, specifically: $ pipenv --python 3.6 Install all dependencies for a project (including dev): $ pipenv install --dev Create a lockfile containing pre-releases: $ pipenv lock --pre Show a graph of your installed dependencies: $ pipenv graph Check your installed dependencies for security vulnerabilities: $ pipenv check Install a local setup.py into your virtual environment/Pipfile: $ pipenv install -e . Use a lower-level pip command: $ pipenv run pip freezepipenv 使用過程 創建環境,安裝指定 python 的版本信息:
mkdir new_env & cd new_env pipenv install // pipenv install --three
如果指定了 --two 或者 --three 選項參數,則會使用 python2 或者 python3 的版本安裝,否則將使用默認的 python 版本來安裝。當然也可以指定準確的版本信息:
$ pipenv install --python 3 $ pipenv install --python 3.6 $ pipenv install --python 2.7.14
pipenv 會自動掃描系統尋找合適的版本信息,如果找不到的話,同時又安裝了 pyenv 的話,則會自動調用 pyenv 下載對應版本的 python, 否則會報錯。
這時候在當前 new_env 環境下生成 Pipfile 和 Pipfile.lock 兩個環境初始化文件。
進入|退出環境:進入環境:
pipenv shell
退出環境:
exit //或者 ctrl+d安裝第三方包:
這里我們測試安裝 urllib3 包好了:
pipenv install urllib3
此時,Pipfile 里有最新安裝的包文件的信息,如名稱、版本等。用來在重新安裝項目依賴或與他人共享項目時,你可以用 Pipfile 來跟蹤項目依賴。
Pipfile 是用來替代原來的 requirements.txt 的,內容類似下面這樣。source 部分用來設置倉庫地址,packages 部分用來指定項目依賴的包,dev-packages 部分用來指定開發環境需要的包,這樣分開便于管理。
$ cat Pipfile [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] "urllib3" = "*" [dev-packages] [requires] python_version = "3.6"
Pipfile.lock 則包含你的系統信息,所有已安裝包的依賴包及其版本信息,以及所有安裝包及其依賴包的 Hash 校驗信息。
$ Pipfile.lock { "_meta": { "hash": { "sha256": "af58f3510cb613d4d9241128f9a0ceb9bb936ad907543e23ad8317011dcb6715" }, "pipfile-spec": 6, "requires": { "python_version": "3.6" }, "sources": [ { "name": "pypi", "url": "https://pypi.org/simple", "verify_ssl": true } ] }, "default": { "urllib3": { "hashes": [ "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" ], "index": "pypi", "version": "==1.23" } }, "develop": {} }
現在安裝另一個包,再次查看這兩個文件的內容。你會發現 Pipfile 現在包含兩個安裝包了,Pipfile.lock 也包含了所有已安裝包的依賴包及其版本信息,以及所有安裝包及其依賴包的 Hash 校驗信息。每次你安裝新的依賴包,這兩個文件都會自動更新。
安裝指定版本包:pipenv install urllib3==1.22安裝開發環境下的包:
加 --dev 表示包括 Pipfile 的 dev-packages 中的依賴。
pipenv install httpie --dev卸載第三方包:
pipenv uninstall urllib3 //或者 pipenv uninstall --all更新安裝包:
pipenv update urllib3
更新所有包:
pipenv update
這個命令會刪除所有軟件包然后重新安裝最新的版本。
查看虛擬環境目錄:$ pipenv --venv /Users/liyafeng/.local/share/virtualenvs/new_env-UVLdq9CB
最后的虛擬環境目錄是以當前環境 new_env 作為目錄開頭的。
查看項目根目錄:$ pipenv --where /Users/liyafeng/Documents/www/pythondemo/new_env檢查軟件包的完整性
你是否擔心已安裝的軟件包有沒有安全漏洞?沒關系,pipenv 可以幫你檢查,運行下面的命令:
$ pipenv check Checking PEP 508 requirements… Passed! Checking installed package safety… All good!
上面的命令根據 Pipfile 里的 PEP 508 標記檢查安全漏洞。
查看依賴樹$ pipenv graph httpie==0.9.9 - Pygments [required: >=2.1.3, installed: 2.2.0] - requests [required: >=2.11.0, installed: 2.19.1] - certifi [required: >=2017.4.17, installed: 2018.4.16] - chardet [required: <3.1.0,>=3.0.2, installed: 3.0.4] - idna [required: <2.8,>=2.5, installed: 2.7] - urllib3 [required: >=1.21.1,<1.24, installed: 1.23]鎖定版本
更新 lock 文件鎖定當前環境的依賴版本
pipenv lock環境變量管理
如果你開發調試時需要配一堆環境變量,可以寫到 .env 文件中,在 pipenv shell 進入虛擬環境時,它會幫你把這些環境變量加載好,非常方便。
例如寫一個 .env 文件:
echo "FOO=hello foo" > .env
之后 pipenv shell 進入虛擬環境,echo $FOO 就能看環境變量的值 hello foo 已經設置好了。
參考鏈接https://docs.pipenv.org/
pipenv 新款 Python 虛擬環境工具詳解
pipenv 筆記
pipenv 使用指南
Pipenv – 官方推薦的 Python 包管理工具
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41913.html
摘要:的把最新型最先進的虛擬環境吵得火熱。進入后,你會發現用也是能生效的。但是注意進入環境后千萬不要用退出,而應該用退出。最佳解決方案是因為這種在其他地方也常見,一般都是沒有在環境里安裝的問題。 2018的PyCon把最新型最先進的Python虛擬環境pipenv吵得火熱。看了下介紹感覺真的很好用,它在virtualenv的基礎上包裝了一些更便捷的功能,解決了很多很多virtualenv欠缺...
摘要:安裝好后,在中執行查看版本信息,應該會看到輸出如下信息版本號可能會不同如果提示未找到,則需要手動將用戶基礎目錄下的添加到中。相關文章基礎教程系列第篇開天坑啦 showImg(https://segmentfault.com/img/bV4GZu?w=1262&h=911); 之前說好的 「Odoo 基礎教程系列」終于來了(撒花)~剛過完年重新投入到工作中,一下子事情有點多都要忙不過來了...
摘要:可通過以下命令生成文件運行虛擬環境可使用以下命令來運行項目或者啟動虛擬環境的環境直接運行并不會出現命令行,是應為沒有配置環境變量。 本文最早發布與個人博客:http://www.pylixm.cc 最近常看到pipenv這個管理工具,今天有時間查了下,是 Kennethreitz 大神的作品,看了下github的倉庫,是2017年1月份創建的,僅僅一年的時間變獲得了7k+的收藏,最新一...
摘要:前言第一次接觸到是因為看到董明偉大神的使用管理你的項目,之前可能和大家的選擇類似使用或者來管理的包環境。是針對的包的多版本管理,通過將包安裝到一個模塊來作為的包虛擬環境,通過切換目錄來實現不同包環境間的切換。 前言 第一次接觸到 pipenv 是因為看到@董明偉大神的《使用pipenv管理你的項目》,之前可能和大家的選擇類似使用 virtualenv 或者 pyenv 來管理 pyth...
摘要:提示如果你對的用法以及虛擬環境的概念不熟悉的話,可以通過專欄的舊文出發之旅進行簡單的認識。為什么使用會自動幫你管理虛擬環境和依賴文件,并且提供了一系列命令和選項來幫助你實現各種依賴和環境管理相關的操作。 什么是Pipenv Pipenv是Kenneth Reitz在2017年1月發布的Python依賴管理工具,現在由PyPA維護。你可以把它看做是pip和virtualenv的組合體,而...
閱讀 1958·2021-11-22 15:33
閱讀 3001·2021-11-18 10:02
閱讀 2603·2021-11-08 13:16
閱讀 1617·2021-10-09 09:57
閱讀 1366·2021-09-30 09:47
閱讀 2001·2019-08-29 13:05
閱讀 3064·2019-08-29 12:46
閱讀 1004·2019-08-29 12:19