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查詢安裝的`python`、`python3` 路徑。
* macOS終端:
```shell
❯ 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命令提示符
```shell
❯ where python
C:\Python37\python.exe
C:\Python38\python.exe
C:\Users\fnngj\AppData\Local\Microsoft\WindowsApps\python.exe
```
2. 為不同的python 改名字。
比如, `C:\Python38\python.exe` 檔案拷貝改名為 `C:\Python38\py8.exe`,那我就可以愉快的使用py8這個命令了。
```shell
❯ 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.
>>>
```
3. 為不同的python 安裝庫。
每個python版本下面都有 pip,我們在使用pip的安裝庫的時候,經常不知道他安裝在哪個python下面了。
```shell
❯ 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
```shell
❯ pip install pipenv
```
2. 建立虛擬環境
進入到專案目錄,建立虛擬環境。
```shell
❯ 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
```
3. 安裝依賴
這一步從Pipfile.loc中安裝依賴。
```shell
❯ 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.
```
4. 進入虛擬環境
```shell
❯ pipenv shell
Launching subshell in virtual environment...
```
5.可以在虛擬環境裡面安裝你想要的應用了。
```shell
v3.8.6 ((mypro)) ❯ pip install xxx
```
6.退出虛擬環境
```shell
v3.8.6 ((mypro)) ❯ exit;
```
7.刪除虛擬環境
```shell
❯ pipenv --rm
```
注:其實這兩個管理在pycharm整合的就有,可是上來就完全依賴pycharm開發python的同學很難搞清楚。那麼,本文也有助於你更好的使用 pycharm。