python - pipenv 使用概覽

tiny丶發表於2018-09-06

pipenv是請求庫作者Kenneth Reitz編寫的一個用於建立和管理Python虛擬環境的工具。

Pipenv是Python的官方機構推薦的Python的包工具。

我們知道,為了管理的Python虛擬環境,通常用得比較多的是的virtualenv和pyenv。但是有人覺得它們還不夠好用,不夠偷懶。這個人是誰,就是上面的那位。於是他開發了一個pipenv,結合了PIP及的virtualenv的功能和優點,整合出了pipenv這個工具。其目的是替代的virtualenv和pyenv,將PIP及的virtualenv的功能集於一身。

一,安裝pipenv

窗下很簡單:

pip安裝pipenv

Linux的下:

sudo pip安裝pipenv

在蘋果作業系統下:

$ brew安裝pipenv

也就是說,無法用PIP管理的包,pipenv同樣無法使用。

pipenv依賴:psutil,virtualenv-clone,pew,certifi,urllib3,chardet,requests,mccabe,pyflakes,pycodestyle,flake8等第三方模組。

pipenv有很漂亮的彩色終端介面。

二,簡單使用

進入你的Python的專案資料夾:

cd your_project
pipenv安裝

視窗作業系統中,虛擬環境建立過程如下:

D:\ test \ test_pipenv> pipenv安裝
為這個專案建立virtualenv ......
使用基本字首'c:\\ python36'
C:\ Users \ Administrator \ .virtualenvs \ test_pipenv-XHxuOsj中的新python可執行檔案
ñ\指令碼\ python.exe
安裝setuptools,pip,wheel ......完成。

Virtualenv位置:C:\ Users \ Administrator \ .virtualenvs \ test_pipenv-XHxuOsjn
為這個專案建立一個Pip檔案......
找不到Pipfile.lock,建立...
鎖定[dev-packages]依賴項......
鎖定[packages]依賴項......
更新了Pipfile.lock(c23e27)!
從Pipfile.lock安裝依賴項(c23e27)...
  ================================ 0/0  -  00:00:00
要啟用此專案的virtualenv,請執行以下命令:
 $ pipenv shell

如果你給命令新增--two或--three引數,它將分別使用Python2或3來初始化你的虛擬環境,否則將使用預設的Python的版本。

注意:pipenv預設把虛擬環境的真實檔案全都放在了C:\Users\Administrator\.virtualenvs\test_pipenv-XHxuOsjn\Scripts\python.exe。中,而在實際的專案資料夾內只建立了兩個新檔案Pipfile和Pipfile.lock這可能造成Ç盤存有大量的檔案,不是個好的做法。(但好像無法修改這一路徑....)

看一下Pipfile中的內容:

[[資源]]

url  =  “https://pypi.python.org/simple” 
verify_ssl  =  true 
name  =  “pypi”


[包裝]


[DEV-包]

最關鍵的是定義了安裝第三方庫使用的源,預設為官方的的PyPI。

而Pipfile.lock檔案內容呢?

{
    “_meta”:{
        “hash”:{
            “sha256”:“5f0257fe8c7a73db1c8de519faa92c658282a01087eb2bfafba7962704c23e27”
        },
        “host-environment-markers”:{
            “implementation_name”:“cpython”,
            “implementation_version”:“3.6.4”,
            “os_name”:“nt”,
            “platform_machine”:“AMD64”,
            “platform_python_implementation”:“CPython”,
            “platform_release”:“7”,
            “platform_system”:“Windows”,
            “platform_version”:“6.1.7601”,
            “python_full_version”:“3.6.4”,
            “python_version”:“3.6”,
            “sys_platform”:“win32”
        },
        “pipfile-spec”:6,
        “要求”:{},
        “來源”:[
            {
                “名字”:“pypi”,
                “url”:“https://pypi.python.org/simple”,
                “verify_ssl”:是的
            }
        ]
    },
    “預設”:{},
    “發展”: {}
}

初始情況下,檔案裡只包含一些作業系統的基本資訊。

Pipfile和Pipfile.lock兩個檔案互相配合,完成虛擬環境的管理工作。

防盜連結:本文來自劉江的部落格和教程網站http://www.liujiangblog.com/blog/

三,安裝第三方模組

Pipfile包含關於專案的依賴包的資訊,並取代通常在Python專案中使用的requirements.txt檔案。如果你在具有要求.txt檔案的專案中啟動了Pipenv,則在把它從專案中刪除之前,應該使用Pipenv安裝該規定中列出的所有依賴包。

使用pipenv建立虛擬環境後,進入pipfile所在目錄,使用install命令安裝第三方庫。例如:

pipenv安裝django

這個時候,你其實把pipenv當作PIP來使用。無需像的virtualenv那樣需要額外的先啟動虛擬環境.pipenv區分你是在給哪個虛擬環境工作,依賴的是Pipfile檔案的位置。

要解除安裝某個第三方庫:

pipenv解除安裝beautifulsoup4

四,凍結Pipfile

凍結就相當於將專案所使用的第三方庫列表進行打包輸出,類似於的virtualenv中生成requirements.txt檔案。

通過更新Pipfile.lock來凍結庫名稱及其版本,以及其依賴關係的列表需要使用鎖引數:

pipenv鎖

如果另一個使用者拷貝了你的專案,他們只需要安裝Pipenv,然後:

pipenv安裝

Pipenv會在專案資料夾下自動尋找Pipfile和Pipfile.lock檔案,建立一個新的虛擬環境並安裝必要的軟體包。

也就是說pipenv install的時候有三種邏輯:

  • 如果目錄下沒有Pipfile和Pipfile.lock檔案,表示建立一個新的虛擬環境;
  • 如果有,表示使用已有的Pipfile和Pipfile.lock檔案中的配置建立一個虛擬環境;
  • 如果後面帶諸如Django的這一類庫名,表示為當前虛擬環境安裝第三方庫。

五,管理開發環境

通常有一些Python包只在你的開發環境中需要,而不是在生產環境中,例如單元測試包.Pipenv使用--dev標誌區分兩個環境。

pipenv安裝--dev django

。Django的庫現在將只在開發虛擬環境中使用如果你要在你的生產環境中安裝你的專案:

pipenv安裝

這不會安裝Django的包。

但是,如果有一個開發人員將你的專案克隆到自己的開發環境中,他們可以使用--dev標誌,將Django的也安裝:

pipenv安裝--dev

也就是說一個--dev引數,幫你在同一個虛擬環境中又區分出了開發和非開發環境。

六,在虛擬環境中執行命令

使用執行引數,提供要執行的命令:

pipenv執行python manage.py runserver

這將使用當前虛擬環境關聯的的Python直譯器,執行命令。

或者簡單的執行指令碼:

pipenv執行python your_script.py

如果你不想每次執行的Python時都輸入這麼多字元,可以在外殼中設定一個別名,例如,

別名prp =“pipenv run python”

七,pipenv選項解釋

pipenv具有下列的選項:

$ pipenv
用法:pipenv [選項]命令[ ARGS ] ...

選項:
  - 更新更新Pipenv & pip
  - 顯示專案檔案所在路徑
  --venv顯示虛擬環境實際檔案所在路徑
  --py顯示虛擬環境Python直譯器所在路徑
  --envs顯示虛擬環境的選項變數
  --rm刪除虛擬環境
  --bare最小化輸出
  --completion完整輸出
  --man顯示幫助頁面
  --three / --two使用Python的3 /2建立虛擬環境(注意本機已安裝的Python的版本)
  --python TEXT指定某個Python版本作為虛擬環境的安裝源
  --site-packages附帶安裝原Python直譯器中的第三方庫
  --jumbotron不知道啥玩意....
  --version版本資訊
  -h, -  help幫助資訊

pipenv可使用的命令引數:

命令:
  check       檢查安全漏洞
  圖      顯示當前依賴關係圖資訊
  安裝    安裝虛擬環境或者第三方庫
  鎖定       並生成Pipfile 。鎖定檔案
  開啟       在編輯器中檢視一個庫
  執行        在虛擬環境中執行命令
  外殼      進入虛擬環境
  解除安裝  解除安裝一個庫
  更新     解除安裝當前所有的包,並安裝它們的最新版本

一些使用例子:

用法示例:
   使用Python 3.6建立虛擬環境:
   $ pipenv --python 3.6

   安裝包括開發環境中的第三方庫:
   $ pipenv install --dev

   鎖定pipfile:
   $ pipenv lock --pre

   將本地setup.py安裝到虛擬環境/ Pipfile中:
   $ pipenv install -e。

八,一些使用過程展示

定位專案路徑:

$ pipenv  - 其中
/ Users / kennethreitz / Library / Mobile Documents / com~apple~CloudDocs / repos / kr / pipenv / test

定位虛擬環境

$ pipenv --venv
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre

定位的Python直譯器:

$ pipenv --py
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre/bin/python

安裝包:

$ pipenv安裝為這個專案
建立virtualenv ......
...
沒有提供包,安裝所有依賴項。
Virtualenv位置:/Users/kennethreitz/.local/share/virtualenvs/test-EJkjoYts
從Pipfile.lock安裝依賴項...
...

要啟用這個專案'小號的virtualenv,執行以下命令:
$ pipenv shell

安裝一個開發環境中才使用的包:

$ pipenv安裝pytest --dev
安裝pytest ...
...
新增pytest到Pipfile '小號[ DEV-包] ...

顯示依賴關係:

$ pipenv graph
 requests == 2 .18.4
  - CERTIFI [必需的:> = 2017 .4.17,安裝:2017 .7.27.1 ] 
  - chardet的[必需的:> = 3 .0.2,< 3 .1.0,安裝:3 .0.4 ] 
  - IDNA [必需的:> = 2。 5,< 2 0.7,安裝:2 0.6 ] 
  - urllib3 [需要:< 1 0.23,> = 1 .21.1,安裝:1 0.22 ]

生成鎖檔案:

$ pipenv鎖
確保從Pipfile確保所有依賴項...
鎖定[ dev-packages ]依賴項......
鎖定[ packages ]依賴項......
注意:您的專案現在只安裝了預設的[ packages ]。
要安裝[ dev-packages ],請執行:$ pipenv install --dev

安裝開發環境依賴:

$ pipenv install --dev
Pipfile在/ Users / kennethreitz / repos / kr / pip2 / test / Pipfile中找到。考慮到這是專案的家。
Pipfile.lock已過期,正在更新......
確保從Pipfile確保所有依賴項...
鎖定[ dev-packages ]依賴項......
鎖定[ packages ]依賴項......

解除安裝所有的包:

$ pipenv uninstall --all
沒有提供包,解除安裝所有依賴項。
發現25安裝包(小號),清洗...
...
環境現在被清除和新鮮!

使用虛擬環境的shell.exit退出:

$ pipenv shell
正在載入.env環境變數......
在虛擬環境中啟動子shell。鍵入“退出”或按“Ctrl + d”來恢復。

要在n多伺服器端部署python的應用,雖然python本身是跨平臺的,當時好多第三方的擴充套件卻不一定都能做到各個版本相容,即便是都是linux,在redhat系列和ubuntu系列之間來回導也是個很讓人頭痛的事.
   找到這個virtualenv,整個的clone一個python環境,可以在這個虛出來的環境裡面配置一番,然後整個打包釋出,這樣在其他linux版本上部署時就會非常簡單,實在是部署python伺服器端應用的必備! 

 

使用pip安裝virtualenv:

pip install virtualenv
# 新建虛擬環境
virtualenv .venv   
ls -al  #檢視
source .venv/bin/activate   #啟用(deactivate  登出)
cd .venv/

    剩下的就是在這個虛擬python環境中安裝配置你的服務應用,
    裝完後修改一下bin/activate指令碼,讓它自動把環境設定好,服務啟動起來,有一個地方要修改:
    找到設定VIRTUAL_ENV的地方,改成如下:

export VIRTUAL_ENV=`pwd`

    如果你不熟悉shell,那麼要注意pwd兩邊的不是單引號‘而是` 
    然後就可以打包帶走了,到另一臺server上,只要簡單的解包,然後執行 

. bin/activate 

     就一切ok了