【pipenv】取得python與套件的版本

Python 可以建立虛擬環境,其中 pipenv 是個流行的工具。在運作過程中,需要知道目前的 Python 版本或是套件版本,以利建立開發環境或是解決問題,可以是要如何取得這些資訊呢?

本篇就會說明,如何取得 pipenv 所建立的 Python 環境之版本,以及其安裝的套件版本。


Python版本:

  • 3.9
  • 3.10

 

使用 pipenv 可以指定 Python 版本,也可以管理要使用的套件(package)的版本,然而時間久了就忘記是使用哪些版本,因此在這邊會說明如何取得各個的版本資訊。

 

取得 Python 版本

在使用Python --version可以取得 Python 版本,但這個版本是當下呼叫Python時會使用的版本,與我們在pipenv虛擬環境中要用的是指不同的東西。

如果要取得pipenv中的 Python 版本,可以進入 Python 虛擬環境中:

pipenv shell

接著執行在該環境中的 Python 版本查詢,也就是使用:

python --version

 

取得套件的版本

知道所使用的 Python 版本後,想要知道在這個環境底下所安裝的套件有哪些,並且他們的版本為何,有幾個方法可以查詢。

 

從 Pipfile 檔取得資料

使用pipenv的時候會自動產生記錄著版本與套件資訊的檔案「Pipfile」,裡面就記錄著 Python 版本和所要用的套件及其版本。

也許會有疑問,那直接看這份檔案就可以,為什麼還要有那麼多的查詢方式呢?因為有這份Pipfile,並不代表你的環境就是符合檔案紀錄,尤其是協作、網路上抓 repo 下來的,可能與自己本身的環境不一樣,尤其是 Python 的版本。像是有遇到在Pipfile檔案中寫著3.9,但本機環境只有3.10,因此執行為3.10,這時候Pipfile就失準了(當有設定好Pipfile時,以Pipfile為準最為方便)。

內容可能呈現為:

[packages]
requests = "*"
pandas = "*"
python-dateutil = "*"
pymysql = "*"
[dev-packages]
black = "*"
[requires]
python_version = "3.9"

 

使用 pip freeze

pipenv虛擬環境中,也就是使用pipenv shell,這時使用指令:

pip freeze

就可以看到所安裝好的套件版本囉!

內容可能呈現為:

black==22.3.0
certifi==2021.10.8
charset-normalizer==2.0.12
click==8.1.2
idna==3.3
mypy-extensions==0.4.3
numpy==1.22.3
pandas==1.4.2
pathspec==0.9.0
platformdirs==2.5.2
PyMySQL==1.0.2
python-dateutil==2.8.2
pytz==2022.1
requests==2.27.1
six==1.16.0
tomli==2.0.1
typing_extensions==4.2.0
urllib3==1.26.9

 

使用 pip list

同樣的在 pipenv shell 中啟動虛擬環境,接著在此環境下使用:

pip list

就可以得到所有套件及其版本資訊。

內容可能呈現為:

Package            Version
------------------ ---------
black              22.3.0
certifi            2021.10.8
charset-normalizer 2.0.12
click              8.1.2
idna               3.3
mypy-extensions    0.4.3
numpy              1.22.3
pandas             1.4.2
pathspec           0.9.0
pip                21.2.4
platformdirs       2.5.2
PyMySQL            1.0.2
python-dateutil    2.8.2
pytz               2022.1
requests           2.27.1
setuptools         57.5.0
six                1.16.0
tomli              2.0.1
typing_extensions  4.2.0
urllib3            1.26.9
wheel              0.37.0

 

使用 pipenv graph

如果直接使用pipenv graph,則不需要進入虛擬環境中,可以直接直到安裝的套件與版本,並且用組合的形式呈現,可以快速的看出來其相依性。

內容可能呈現為:

black==22.3.0
 - click [required: >=8.0.0, installed: 8.1.2]
 - mypy-extensions [required: >=0.4.3, installed: 0.4.3]
 - pathspec [required: >=0.9.0, installed: 0.9.0]
 - platformdirs [required: >=2, installed: 2.5.2]
 - tomli [required: >=1.1.0, installed: 2.0.1]
 - typing-extensions [required: >=3.10.0.0, installed: 4.2.0]
pandas==1.4.2
 - numpy [required: >=1.18.5, installed: 1.22.3]
 - python-dateutil [required: >=2.8.1, installed: 2.8.2]
   - six [required: >=1.5, installed: 1.16.0]
 - pytz [required: >=2020.1, installed: 2022.1]
PyMySQL==1.0.2
requests==2.27.1
 - certifi [required: >=2017.4.17, installed: 2021.10.8]
 - charset-normalizer [required: ~=2.0.0, installed: 2.0.12]
 - idna [required: >=2.5,<4, installed: 3.3]
 - urllib3 [required: >=1.21.1,<1.27, installed: 1.26.9]

 


結尾

在撰寫程式前,主要是設定好開發環境,常常會遇到環境的版本不一致,或是某些套件相依的版本需要調整,這時候就需要這些版本資訊。而取得相關方法很多,僅列出常見的幾個,如果還有看到一些比較好用的方法,會在記錄下來~

 

~Copyright by Eyelash500~

IT技術文章EY*研究院
iT邦幫忙eyelash*睫毛
Blog睫毛*Relax
Facebook睫毛*Relax