mieki256's diary



2022/08/07() [n年前の日記]

#1 [python][ubuntu] virtualenvでPythonの別バージョン環境を作成

Ubuntu Linux 22.04 LTS上で、Python + pygame 1.9.6 が利用できる状態にしたい。そこで、複数の Python 動作環境を作成できるらしい virtualenv を試用してみた。

ちなみに、Ubuntu 22.04 は仮想PC上で ―― Windows10 x64 21H2 + VMware Player 16.2.4 build-20089737 上で動かしてる。

一応、Ubuntu 22.04 の公式リポジトリに virtualenv (20.13.0+ds-2) というパッケージは存在するのだけど…。その版をインストールしても、何故かエラーが出て動かない。
sudo apt install virtualenv

動かないのでは意味が無いので、アンインストールしておいた。
sudo apt purge virtualenv
sudo apt autoremove

どうやら pip3 でインストールした版ならそれらしく動くようだなと…。以下はユーザ権限でインストールする例。
pip3 install virtualenv
$ virtualenv --version
virtualenv 20.16.3 from /home/USERNAME/.local/lib/python3.10/site-packages/virtualenv/__init__.py

アンインストールは以下。
pip3 uninstall virtualenv

管理者権限でインストールしなおした。
sudo -H pip3 install virtualenv
$ virtualenv --version
virtualenv 20.16.3 from /usr/local/lib/python3.10/dist-packages/virtualenv/__init__.py

ユーザディレクトリ/.local/bin に各種コマンドがインストールされるみたいなので、~/.bashrc の最後のあたりでPATHを設定しておいた。
vi ~/.bashrc
export PATH=$PATH:/home/USERNAME/.local/bin

Python 2.7 の環境を作成。 :

Ubuntu 22.04 にインストールされている Python 2.7 をクローン(?)して、Python 2.7 の環境を作成してみる。

myenv27 というディレクトリを作成して、その中に環境を入れてみる。
virtualenv -p python2.7 myenv27

環境を有効化。
source myenv27/bin/activate

プロンプトの最初に「(ディレクトリ名)」が表示されていたら、その環境で動いてる。Python のバージョンを確認。
(myenv27) ... $ python --version
Python 2.7.18

環境を無効化。
(myenv27) ... $ deactivate

Python 3.10 の環境を作成、有効化、無効化。 :

Ubuntu 22.04 にインストールされている Python 3.10.4 をクローンして Python 3.10 の環境を作成、有効化、無効化するなら以下。
$ virtualenv -p python3.10 myenv310

$ source myenv310/bin/activate

(myenv310) ... $ python --version
Python 3.10.4

(myenv310) ... $ deactivate

システムに入ってないPythonバージョンで環境を作成。 :

virtualenv は、システムにインストール済みの Python をコピーして仮想環境を作る。システムにインストールされていないPythonバージョンを使いたい場合は、事前に別バージョンをインストールしておかないといけない。らしい。

_virtualenvで特定バージョンのPythonを指定する[Ubuntu]
_New Python Versions : “deadsnakes” team

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

Ubuntu 22.04 LTS の場合、Python 3.7、3.8、3.9 ならインストールできる。それより前のバージョンは用意されてない模様。
sudo apt install python3.7 python3.7-dev python3.7-tk python3.7-full
sudo apt install python3.8 python3.8-dev python3.8-tk python3.8-full
sudo apt install python3.9 python3.9-dev python3.9-tk python3.9-full

pygame 1.9.6 を Python 3.8環境上でインストール。 :

Ubuntu 22.04 は、sudo apt install python3-pygame をすると、pygame 2.1.2 がインストールされてしまう。どうにかして pygame 1.9.6 を動かしてみたい。

以下で、pygame 1.9.x をビルドするために必要なパッケージ群が紹介されていた。インストールしておく。

_python - Trying to install pygame on ubuntu which gives error - Stack Overflow
sudo apt install libfreetype6-dev libjpeg-dev libportmidi-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libsmpeg-dev libx11-dev libavformat-dev libswscale-dev

pygame 1.9.6 は Python 2.7, 3.4 - 3.8 をサポートしてるので、今回は Python 3.8環境を作成してみる。

_pygame - PyPI

sudo apt install python3.8 python3.8-dev python3.8-tk

virtualenv -p python3.8 myenv38

Python 3.8環境を有効化。
source myenv38/bin/activate
(myenv38) ... $ python -V
Python 3.8.13

pygame 1.9.6 を pip を使ってインストールしてみる。
pip install pygame==1.9.6
$ pip list | grep pygame
pygame     1.9.6
$ python -c "import pygame; print(pygame.version.vernum);"
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
1.9.6

これで、Ubuntu 22.04上でも、Python 3.8 + pygame 1.9.6 がインストールできた。

昨日作成した、tkinter ウインドウ内に pygame ウインドウを埋め込むスクリプトを動かしてみた。Python 2.7 ではなく Python 3.8 上で動かすので、昨日のスクリプトの import 関連のあたりを少し修正してある。 *1

_01_embed_pygamewindow.py

Ubuntu 22.04 + Python 3.8.13 + pygame 1.9.6 上でも、このスクリプトが動いてくれた。ちゃんと pygame のウインドウが埋め込まれてる。pygame 2.x.x では埋め込まれないはずなので、たしかに pygame 1.9.6 が利用できている。

ただ、これはあくまで開発用の環境で動いてるだけなので…。フツーのアプリとして、「Python 3.8 + pygame 1.9.6 + Pythonスクリプト」を呼び出せるわけではなさそうだなと…。

virtualenvwrapperを導入。 :

virtualenvwrapper をインストールすると、環境の管理や切り替えが楽になるらしい。試用してみた。

_Virtualenvwrapperの導入 - Qiita
_virtualenvでpython環境を管理する - Qiita

インストール。
sudo -H pip3 install virtualenv
sudo -H pip3 install virtualenvwrapper

各環境を入れておくディレクトリ、~/.virtualenvs を作成しておく。
mkdir ~/.virtualenvs

virtualenvwrapper.sh の置き場所を確認。
$ which virtualenvwrapper.sh
/usr/local/bin/virtualenvwrapper.sh

~/.bashrc の最後に記述を追加。
vi ~/.bashrc
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
fi

使い方は以下。
  • mkvirtualenv --python=python3.8 env38 : 環境を作成
  • deactivate : 環境を無効化
  • workon : 環境を一覧表示
  • workon env38 : 環境を有効化
  • rmvirtualenv env38 : 環境を削除

参考ページ。 :


*1: Python 2.7 は Tkinter を import するが、Python 3.x は tkinter を import しないといけない。

以上、1 日分です。

過去ログ表示

Prev - 2022/08 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project