PyCharm+Pipenv虛擬環境開發基礎

本文測試環境

  • Windows 7(SP1) 64bits
  • Pythn 3.8.4
  • Pycharm 2020.1

爲何要使用虛擬環境

對這個問題,廖雪峯老師的描述是這樣的:
「在開發Python應用程序的時候,系統安裝的Python3只有一個版本:3.4。全部第三方的包都會被pip安裝到Python3的site-packages目錄下。html

若是咱們要同時開發多個應用程序,那這些應用程序都會共用一個Python,就是安裝在系統的Python 3。若是應用A須要jinja 2.7,而應用B須要jinja 2.6怎麼辦?python

這種狀況下,每一個應用可能須要各自擁有一套「獨立」的Python運行環境」git

除了上面廖雪峯老師描述的這種本身在不一樣版本Python環境下開發項目狀況外,在開發過程當中,咱們經常會在例如github這種源碼網站下載、試用並定製各類Python半成品,此時原做品每每存在與本身機器的安裝包差距,所以,當在本身環境下調試經過原項目時也離不開虛擬環境的使用——你總不會一上來就使用本身的環境工具修改下載的半成品工程,對不對?github

關於pip

pip確定是Python新手必需學習使用的工具之一,它是python下的包管理工具,主要用於從pypi下載所需的python包,可是pip不會自動處理包之間的依賴關係。shell

virtualenv

virtualenv是一個虛擬環境管理工具,使用virtualenv能夠建立一個徹底隔離的環境,但virtualenv只能建立基於本機已存在的python版本的虛擬環境;使用virtualenv建立完成環境之後,可使用pip安裝python包,也可使用conda安裝python包。django

virtualenv和pip配合使用,PyCharm內置提供virtualenv支持。安全

關於conda

conda結合了pip和virtualenv二者的功能,使用conda能夠建立任意python版本的虛擬隔離環境,並且conda仍是一個包管理工具,不但能夠安裝python包,並且能夠安裝其餘語言的包,更重要的是conda具備完美的包依賴關係處理能力,能夠輕鬆的安裝所需的包而不用過度的去手動處理各類包之間的依賴關係;在使用conda安裝包時,能夠修改安裝源爲https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ide

https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/工具

conda和anaconda

conda是一個通用包管理器,anaconda是python發行版,conda是用anaconda打包的;安裝anaconda後會有不少預置的python包,其中也包括conda工具,能夠安裝miniconda以得到一個純淨的環境,而後使用conda安裝所需的包。學習

pipenv簡介

pipenv 是 Pipfile 主要倡導者、requests 做者 Kenneth Reitz 寫的一個命令行工具,主要包含了Pipfile、pip、clickrequests和virtualenvPipfile是社區擬定的依賴管理文件,用於替代過於簡陋的 requirements.txt 文件。

你能夠把它看作是pip和virtualenv的組合體,而它基於的Pipfile則用來替代舊的依賴記錄方式(requirements.txt)。

如何使用Pipenv

即便你已經安裝了PyCharm(注意我目前版本爲2020.1)也要求先安裝pipenv,命令以下:

pip install pipenv

使用Pipenv時,幾乎什麼都沒必要作,Pipenv會自動幫你管理依賴。Pipenv會在你建立虛擬環境時自動建立Pipfile和Pipfile.lock文件(若是不存在),而且會在你使用pipenv install和pipenv uninstall命令安裝和卸載包時自動更新Pipfile和Pipfile.lock。

Pipfile用來記錄項目依賴包列表,而Pipfile.lock記錄了固定版本的詳細依賴包列表。

Pipenv優點

(1)pipenv集成了pip,virtualenv二者的功能,且完善了二者的一些缺陷。

(2)過去用virtualenv管理requirements.txt文件可能會有問題,Pipenv使用Pipfile和Pipfile.lock,後者存放將包的依賴關係,查看依賴關係是十分方便。

(3)各個地方使用了哈希校驗,不管安裝仍是卸載包都十分安全,且會自動公開安全漏洞。。

(4)經過加載.env文件簡化開發工做流程。

(5)支持Python2 和 Python3,在各個平臺的命令都是同樣的。

建立pipenv:
pipenv

啓動pipenv:

pipenv shell(爲存在虛擬環境可自動建立)

退出pipenv:
exit

查找全部安裝包:
pip list

環境內包的依賴展現:

```pipenv graph

查找虛擬環境的路徑:
`pipenv --venv`

卸載安裝包:
`pipenv uninstall`

【建議】在使用pipenv以前,必須完全的忘記pip這個東西。

新建一個準備當環境的文件夾pipenvtest,並cd進入該文件夾:
pipenv --three 會使用當前系統的Python3建立環境

pipenv --python 3.6 指定某一Python版本建立環境

pipenv shell 激活虛擬環境

pipenv --where 顯示目錄信息
/home/jiahuan/pipenvtest

pipenv --venv 顯示虛擬環境信息
/home/jiahuan/.local/share/virtualenvs/pipenvtest-9KKRH3OW

pipenv --py 顯示Python解釋器信息
/home/jiahuan/.local/share/virtualenvs/pipenvtest-9KKRH3OW/bin/python

pipenv install requests 安裝相關模塊並加入到Pipfile

pipenv install django==1.11 安裝固定版本模塊並加入到Pipfile

pipenv graph 查看目前安裝的庫及其依賴

## 在部署環境安裝依賴
過去,當咱們須要在一個新的環境,好比部署上線環境安裝全部依賴時,咱們須要重複上面的多條命令:

$ virtualenv venv  # 建立虛擬環境
$ . venv/bin/activate  # 激活虛擬環境
(venv)$ pip install -r requirements.txt  # 安裝requirement.txt中記錄的依賴

如今,使用Pipenv則只須要執行pipenv install,它會自動安裝Pipfile中記錄的依賴:

> $ pipenv install
## 區分開發依賴
之前,使用requirements.txt時,咱們經過會單首創建一個requirements-dev.txt文件來手動加入開發依賴。好比項目開發時纔會用到pytest,那麼你須要手動建立這個文件,而後寫入requirements.txt:

> pytest==1.2.3

在新的開發環境安裝依賴時,你須要安裝這個文件中的依賴:

> (venv)$ pip install -r requirements-dev.txt

如今:
使用Pipenv時,你只須要在安裝pytest時添加一個–dev選項,它會自動被分類爲開發依賴(寫入Pipfile的dev-packages一節中):

> $ pipenv install pytest --dev

在新的開發環境安裝依賴時,也只須要在pipenv install命令後添加–dev選項便可一併安裝開發依賴:

`$ pipenv install --dev`

# 未完待續......
# 主要參考資料
* https://alexgoke.github.io/2019/07/31/Pipenv%E5%AF%B9%E6%AF%94virtualenv/
* https://www.cnblogs.com/zhaoweihang/p/10794694.html
* https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480

* pycharm實如今虛擬環境中引入別人的項目,https://www.jb51.net/article/182237.htm
相關文章
相關標籤/搜索