前言
剛入門Python
,看到PyCharm
的環境管理選擇有好幾個選擇,分別是virtualenv
、pipenv
、venv
、conda
,只知道這些都可以用來管理Python
環境的,但不知道這些環境有什么區別,所以,本文將對這些環境管理進行總結。
virtualenv
除非你還在使用python 2
,否則不推薦。
venv
python
自帶的虛擬環境管理,簡單是它的優勢,也是它的劣勢。
- 只能創建虛擬環境,不能指定系統不存在的
python
環境版本,不能管理系統中的環境列表(例如選擇一個已經創建好了的虛擬環境)。 venv
的虛擬環境默認是存放在項目文件夾里的,這會影響項目文件的管理。
pipenv
requests
庫作者Kenneth Reitz
大神的作品。但pipenv
并不穩定,例如,如果你運行pip install ...
兩次,結果可能不一樣,pipenv
曾承諾解決這個問題,但實際上,它只是多次嘗試運行pip install <單個包>
,直到結果看起來差不多符合規范。顯然,這樣的方式更慢,但最終問題依然存在。
anaconda / conda
如果是科學計算的新手,推薦使用,但:
anaconda
實在過于臃腫,它的安裝包里包括了眾多科學計算會用到的packages,安裝后動輒5-6個G。anaconda
有個不包含packages
的版本,叫miniconda
,但miniconda
仍然存在安裝依賴庫過于激進的問題,安裝同樣的packages
,conda
總會比別的包管理器安裝更多的“依賴包”,即便有的“依賴包”并不是必須,這會導致你的項目出現不必要的膨脹。- 同時,
conda
的packages
列表conda list
還存在和pip list不一致的問題。
- 同時,
poetry
唯一的真神。poetry
沒有上述缺點,同時輕便強大。
poetry
使用pyproject.toml
和poetry.lock
文件來管理依賴,類似于JavaScript/Node.js
的Npm
和Rust
的Cargo
,這倆都是非常成熟好用的依賴管理方案。poetry
本身并不具有管理Python
解釋器的功能,推薦和pyenv
/pyenv-win
使用,可以輕松下載和設置不同版本的Python
解釋器。poetry
的缺點可能是較為復雜,上手困難。由于poetry
嚴格的依賴管理策略,你可能會在安裝依賴包時遇到更多的問題。- 在國內,
poetry
還有另一個缺點,無法設置全局鏡像源,只可針對單個項目設置鏡像源。
pip
你應該僅使用pip
來安裝poetry
,就像IE
的唯一用途是下載Chrome
。