Ubuntu 20.04 では Python3.8が入っている。
テストのためにPython3.6を使いたかったので、以下のようにしてテストした。
「python3 - Problem with creating Python 3.6 virtual environment on Ubuntu 20.04 - Ask Ubuntu」
https://askubuntu.com/questions/1231543/problem-with-creating-python-3-6-virtual-environment-on-ubuntu-20-04
ここを参考に
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt-get update
$ sudo apt-get install python3.6
としました。この時点で
$ python3.6
とすると
Python 3.6.12 (default, Aug 17 2020, 23:45:20)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
となります。
次に、
$ sudo apt-get install python3.6-venv
$ python3.6 -m venv mypy36venv
単に python を起動すると 3.8.5 が起動します。
$ python --version
Python 3.8.5
環境を切り変えると、3.6.12が起動するようになります。
$ source mypy36venv/bin/activate
(mypy36venv) $ python --version
Python 3.6.12
この状態で、
$ sudo python3.6 -m pip install pip
とすると
Requirement already satisfied: pip in /usr/lib/python3/dist-packages (20.0.2)
(mypy36venv) $
となり、pipが使えました。(多分、sudo python3.6 -m pip install pip の操作自体はいらないはず:未確認)
$ pip3.6 install pyserial
$ pip3.6 install pyftdi
sudo 環境で使う
上記はローカルユーザの環境なので、sudo して動かすような python プログラムだと反映されない。
$ sudo pip3.6 install pyserial
としても、
sudo: pip3.6: コマンドが見つかりません
となる。
なのでrootで環境を作ります。
$ sudo python3.6 -m venv rootpy36venv
ここから先は root のシェル環境で作業しました。
$ sudo bash
# source rootpy36venv/bin/activate
# pip3.6
# pip3.6 install pyserial
# pip3.6 install pyftdi
これで sudo python3.6 で起動する python 環境でも必要なモジュールが使えるようになりました。