python_venv


pythonにおける venvについて教えていただきたいのですが、


複数のvenvを作成したときに


あるvenvでは python2でコードを実行させる、


別の venvでは 最新のpythonで実行させる、


といった使い方もできるのでしょうか?



はい、Python の `venv` を使えば、

異なる Python バージョンを使う仮想環境を作成できます。


## **異なる Python バージョンの `venv` の作成方法**


`venv` は基本的にシステムのデフォルトの Python バージョンを使いますが、

**異なるバージョンを指定**して仮想環境を作成することも可能です。


### **1. Python 2 を使う venv を作成する**


Python 2 の `venv` は 

`virtualenv` という別のツールを使う必要があります。  

Python 2.7 は `venv` が標準搭載されていないためです。


#### **(1) `virtualenv` をインストール**

Python 2 で `virtualenv` をインストールします。


```bash


pip install virtualenv


```


#### **(2) Python 2 用の仮想環境を作成**


```bash


virtualenv -p /usr/bin/python2 venv_py2


```


または(Windows の場合):


```powershell


virtualenv -p C:\Path\To\Python27\python.exe venv_py2


```


これで `venv_py2` というフォルダに Python 2 の仮想環境が作成されます。


#### **(3) 仮想環境を有効化**


- **Mac/Linux**


  ```bash

  

  source venv_py2/bin/activate

  

  ```

  

- **Windows**


  ```powershell

  

  venv_py2\Scripts\activate

  

  ```


有効化すると `(venv_py2)` というプレフィックスが表示され、

その状態で `python` を実行すると Python 2 が起動します。


---


### **2. 最新の Python 用の venv を作成**


Python 3.9 や Python 3.10 などの最新バージョンを指定して

 `venv` を作成できます。


#### **(1) Python のパスを確認**

どの Python バージョンを使いたいか確認します。


```bash


which python3.10   # Mac/Linux

where python3.10    # Windows


```


Python 3.10 が `/usr/bin/python3.10` にあると仮定します。


#### **(2) 最新の Python で仮想環境を作成**


```bash


python3.10 -m venv venv_py3


```

Windows の場合:


```powershell


C:\Path\To\Python310\python.exe -m venv venv_py3


```


#### **(3) 仮想環境を有効化**


- **Mac/Linux**


  ```bash

  

  source venv_py3/bin/activate

  

  ```

- **Windows**


  ```powershell

  

  venv_py3\Scripts\activate

  

  ```


これで `venv_py3` では Python 3.10 を使えます。


---


## **仮想環境の切り替え**

- Python 2 用の環境を使いたいとき


  ```bash

  

  source venv_py2/bin/activate

  

  ```

  

- 最新の Python 用の環境を使いたいとき


  ```bash

  

  source venv_py3/bin/activate

  

  ```

  

- 仮想環境を抜ける(共通)


  ```bash

  

  deactivate

  

  ```


---


## **補足**

- `venv` は `virtualenv` より標準的ですが、

Python 2 では `virtualenv` を使う必要があります。


- `pyenv` というツールを使えば、

複数の Python バージョンを管理しながら 

`venv` を作るのが楽になります。


---


これで、Python 2 と最新の Python の両方を

 `venv` で管理し、使い分けることができます!




コメント