python多版本與虛擬環境

蟲師發表於2021-03-30

這篇純python技術文章,我自己平時也會用到,在此記錄一下。

為什麼會用到多個Python版本?

用macOS和Ubutntu的同學都知道系統預設安裝的Python2.7.x,然後,我們平時python開發用的python3,所以,需要額外安裝一個Python3.x的版本。

之前,我想是使用robotframework-ride但它只支援python3.7,於是,我安裝python3.7。(注:現在已經支援3.8了)

前幾天,我想學習一下tinygrad,他支援python3.8,於是,我又裝了3.8。

python多版本管理

  1. 使用Where查詢安裝的pythonpython3 路徑。
  • macOS終端:
❯ where python  
/usr/bin/python    # 2.7.16

❯ where python3
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3  # 3.7.9
/usr/local/bin/python3  # 3.7.9
/usr/bin/python3  # 3.7.3
  • windows命令提示符
❯ where python
C:\Python37\python.exe
C:\Python38\python.exe
C:\Users\fnngj\AppData\Local\Microsoft\WindowsApps\python.exe
  1. 為不同的python 改名字。
    比如, C:\Python38\python.exe 檔案拷貝改名為 C:\Python38\py8.exe,那我就可以愉快的使用py8這個命令了。
❯ py8
Python 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
  1. 為不同的python 安裝庫。

每個python版本下面都有 pip,我們在使用pip的安裝庫的時候,經常不知道他安裝在哪個python下面了。

❯ py8 -m pip install selenium
❯ py8 -m pip show selenium
...
Location: c:\python38\lib\site-packages
...

帶上 python -m的字首,這樣永遠不會裝錯。

為什麼會用虛擬環境?

作為一個使用python開發過大型專案的同學,一定會碰到python庫的版本依賴。

例如 直接依賴:

  • A專案:使用 django 2.2
  • B專案:使用 django 3.1

還有複雜的間接依賴:

  • A專案:使用A框架 ——> 依賴 requests 1.10
  • B專案:使用B庫 ——> 依賴 requests 2.x

而你又需要同時開發A、B兩個專案,總不能在執行不同的專案的時候,就把不同專案的依賴庫裝一遍吧!

虛擬環境管理

python的虛擬環境管理工具挺多的,virtualenv、virtualenvwrapper、pipenv,pyenv。其實明白了原理這些工具都不復雜,這裡以pipenv為例。

  1. 安裝pipenv
❯ pip install pipenv
  1. 建立虛擬環境

進入到專案目錄,建立虛擬環境。

❯ cd mypro  # 進入專案目錄

❯ pipenv --python py8  # 指定基於哪個python版本建立虛擬環境。
Creating a virtualenv for this project...
Pipfile: D:\github\mypro\Pipfile
Using C:/Python38/py8.exe (3.8.6) to create virtualenv...
...
Successfully created virtual environment!
Virtualenv location: C:\Users\fnngj\.virtualenvs\mypro-D2Xyk8c9
  1. 安裝依賴

這一步從Pipfile.loc中安裝依賴。

❯ pipenv install
Installing dependencies from Pipfile.lock (db4242)...
  ================================ 0/0 - 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
  1. 進入虛擬環境
❯ pipenv shell
Launching subshell in virtual environment...

5.可以在虛擬環境裡面安裝你想要的應用了。

v3.8.6 ((mypro)) ❯ pip install xxx

6.退出虛擬環境

v3.8.6 ((mypro)) ❯ exit;

7.刪除虛擬環境

❯ pipenv --rm

注:其實這兩個管理在pycharm整合的就有,可是上來就完全依賴pycharm開發python的同學很難搞清楚。那麼,本文也有助於你更好的使用 pycharm。

相關文章