2022/08/08(月) [n年前の日記]
#1 [python] Windows10 + virtualenvでPython環境を作成
昨日、Ubuntu Linux 22.04 LTS 上で virtualenv を使って Python 3.8 環境を作成したのだけど。
_virtualenvでPythonの別バージョン環境を作成 - mieki256's diary
Windows10上でも同じことができるのか試してみた。
環境は、Windows10 x64 21H2 + Python 3.9.13 + Python 3.8.10。
最初は venv を使って環境を作ろうとしたのだけど、何故か pip が利用できない環境ができてしまったので、代わりに virtualenv ならどうだろうと試してみた次第。
DOS窓を開いて以下を打つ。
virtualenvのインストール。
環境作成 / 有効化 / 無効化。
ただ、環境を作成した直後は、pip が正常動作しなかった。一旦DOS窓を終了して、再度開いてから試したら、何故か pip が動作した…。 *1
pip -V と打ってみて、仮想環境ディレクトリ内のパスが表示されていることを確認。もし、違うパスが表示されていたら、正常に切り替えることができていない。
pip を使って、作業に必要なモジュールをインストールしていく。今回は、pygame 1.9.6、pywin32 (win32gui)、exe化ツールを使いたい。
必要なパッケージをインストールできた。
先日作成した、tkinterのウインドウ内に pygameウインドウを埋め込むスクリプト、01_embed_pygamewindow.py を使って動作確認。
_01_embed_pygamewindow.py
正常に動作した。このスクリプトは、pygame 1.x.x じゃないと動かないので、pygame 1.9.6 が使えていることが分かった。―― Python 3.9 には pygame 2.1.2 をインストールしてあるので、そちらが使われていたらこのスクリプトは正常動作しないはず。
_virtualenvでPythonの別バージョン環境を作成 - mieki256's diary
Windows10上でも同じことができるのか試してみた。
環境は、Windows10 x64 21H2 + Python 3.9.13 + Python 3.8.10。
最初は venv を使って環境を作ろうとしたのだけど、何故か pip が利用できない環境ができてしまったので、代わりに virtualenv ならどうだろうと試してみた次第。
DOS窓を開いて以下を打つ。
virtualenvのインストール。
pych 38-64 python -m pip install -U setuptools virtualenv virtualenvwrapper-win or pip install virtualenv virtualenvwrapper-win setuptools -U
> virtualenv --version virtualenv 20.16.3 from C:\Python\Python38-64\Lib\site-packages\virtualenv\__init__.py
- pych 38-64 : 自作のPython切り替えbatファイル。Python 3.8 x64 に切り替えてる。
環境作成 / 有効化 / 無効化。
virtualenv -p python3.8 env38 .\env38\Scripts\activate deactivate
- virtualenv -p python3.8 env38 : システムにインストール済みの Python 3.8 を使って環境を作成。作成する環境のディレクトリ名は env38 にしている。
- .\env38\Scripts\activate : 環境の有効化
- deactivate : 環境の無効化
ただ、環境を作成した直後は、pip が正常動作しなかった。一旦DOS窓を終了して、再度開いてから試したら、何故か pip が動作した…。 *1
pip -V と打ってみて、仮想環境ディレクトリ内のパスが表示されていることを確認。もし、違うパスが表示されていたら、正常に切り替えることができていない。
> .\env38\Scripts\activate > pip -V pip 22.2.2 from D:\...\venv_test\env38\lib\site-packages\pip (python 3.8)
pip を使って、作業に必要なモジュールをインストールしていく。今回は、pygame 1.9.6、pywin32 (win32gui)、exe化ツールを使いたい。
pip install pygame==1.9.6 pip install pywin32 pip install py2exe pip install pyinstaller
> pip list Package Version ------------------------- --------- altgraph 0.17.2 cachetools 5.2.0 future 0.18.2 pefile 2022.5.30 pip 22.2.2 py2exe 0.11.1.1 pygame 1.9.6 pyinstaller 5.3 pyinstaller-hooks-contrib 2022.8 pywin32 304 pywin32-ctypes 0.2.0 setuptools 63.4.1 wheel 0.37.1
必要なパッケージをインストールできた。
先日作成した、tkinterのウインドウ内に pygameウインドウを埋め込むスクリプト、01_embed_pygamewindow.py を使って動作確認。
_01_embed_pygamewindow.py
python 01_embed_pygamewindow.py
正常に動作した。このスクリプトは、pygame 1.x.x じゃないと動かないので、pygame 1.9.6 が使えていることが分かった。―― Python 3.9 には pygame 2.1.2 をインストールしてあるので、そちらが使われていたらこのスクリプトは正常動作しないはず。
◎ virtualenvwrapper-winを使う。 :
Linux上では virtualenv を使いやすくするためのツール、virtualenvwrapper が存在するけれど。Windowsに移植した virtualenvwrapper-win というツールが存在するらしい。試用してみた。
デフォルトでは、C:\Users\USERNAME\Envs\ 以下に各環境(ディレクトリ)が作成される。環境変数 WORKON_HOME を設定しておけば場所を変更できる。
問題無く動作したけれど…。ただ、自分が把握できてないフォルダ内で、色々なファイルが増えていくのはちょっと引っ掛かるので、virtualenv だけ使って作業したいなと思えてきた。virtualenvwrapper-win はアンインストールした。
pip install virtualenvwrapper-win -U
- mkvirtualenv <name> : 環境作成
- lsvirtualenv : 一覧表示
- rmvirtualenv <name> : 環境削除
- workon [<name>] : 環境を有効化
- deactivate : 環境を無効化
デフォルトでは、C:\Users\USERNAME\Envs\ 以下に各環境(ディレクトリ)が作成される。環境変数 WORKON_HOME を設定しておけば場所を変更できる。
問題無く動作したけれど…。ただ、自分が把握できてないフォルダ内で、色々なファイルが増えていくのはちょっと引っ掛かるので、virtualenv だけ使って作業したいなと思えてきた。virtualenvwrapper-win はアンインストールした。
pip uninstall virtualenvwrapper-win
◎ 参考ページ。 :
_virtualenv, virtualenv-wrapper のインストール(Windows 上)
_virtualenv を用いて Python バージョン3 環境の新規作成(Windows 上)
_virtualenvwrapper-win - PyPI
_windows環境でのvirutalenvwrapper - Qiita
_virtualenv を用いて Python バージョン3 環境の新規作成(Windows 上)
_virtualenvwrapper-win - PyPI
_windows環境でのvirutalenvwrapper - Qiita
◎ venvも試用してみた。 :
Python 3.3以降は、virtualenv と似た機能を持つ venv というツールが同梱されている。
Windows10 x64 21H2 + Python 3.9.13 + Python 3.8.10 の環境で、デフォルトでパスが通してある Python 3.9.13 から venv を使った場合は、問題無く pip が利用できた。
しかし、Python 3.8 + venv で環境を作ると、pip が見つからないと表示されてしまう…。
色々試してたら原因が分かった。自作の Pythonバージョン切替batファイル、pych.bat を使って Python 3.8 に切り替えるとおかしな動作になる。
py.exe 経由で venv を使えば、Python 3.9 と同様に pip を利用できる環境を作成できた。
Windows10 x64 21H2 + Python 3.9.13 + Python 3.8.10 の環境で、デフォルトでパスが通してある Python 3.9.13 から venv を使った場合は、問題無く pip が利用できた。
しかし、Python 3.8 + venv で環境を作ると、pip が見つからないと表示されてしまう…。
色々試してたら原因が分かった。自作の Pythonバージョン切替batファイル、pych.bat を使って Python 3.8 に切り替えるとおかしな動作になる。
py.exe 経由で venv を使えば、Python 3.9 と同様に pip を利用できる環境を作成できた。
py -3.8 -m venv myenv38 myenv38\Scripts\activate (myenv38) ... > python -V Python 3.8.10 (myenv38) ... > python -m pip -V pip 21.1.1 from D:\home\prg\python\_test_sample\pygame\venv_test\myenv38\lib\site-packages\pip (python 3.8) deactivate
- py -3.8 -m venv myenv38 : Python 3.8 を利用して、venv で myenv38 と名前で環境を作成。
- myenv38\Scripts\activate : 環境を有効化。
- python -V : Python のバージョンを表示。
- python -m pip -V : pip のバージョンと、pip が置いてある場所を表示。
- deactivate : 環境を無効化。
◎ 自作のPython切替bat。 :
一応、自作の、Python切替batファイルも置いておく。今回のように、時々問題が発生するけど…。
_pych.bat
Windows版のPythonなら py.exe がインストールされているだろうから、そちらを使ったほうがいいと思う。
_pych.bat
@echo off @rem 各Pythonは、C:\Python\PythonXX\ にインストールされてることが前提。 @rem XXの部分を指定して PATH を切り替えてる。 if "%1"=="39-64" goto SETPATH if "%1"=="38-64" goto SETPATH if "%1"=="27" goto SETPATH if "%1"=="26" goto SETPATH if "%1"=="25" goto SETPATH if "%1"=="24" goto SETPATH echo Pythonのパスを切替えます。 echo Usage: echo pych 39-64 (default) echo pych 38-64 echo pych 27 echo pych 26 echo pych 25 echo pych 24 goto END :SETPATH set PPATH=C:\Python\Python%1 goto SETPATHCOMMON :SETPATHCOMMON @rem set PATH=%PPATH%;%PPATH%\Scripts;%PPATH%\Lib\site-packages\PyQt4;%PATH% set PATH=%PPATH%;%PPATH%\Scripts;%PATH% set PYTHONPATH=%PPATH%\Lib\site-packages set PYTHON_ROOT=%PPATH% @rem ftype Python.CompiledFile=%PPATH%\python.exe "%%1" %%* @rem ftype python.file=%PPATH%\\python.exe "%%1" %%* @rem ftype Python.NoConFile=%PPATH%\pythonw.exe "%%1" %%* echo. echo Pythonのパスを %PPATH% に設定しました echo PYTHONPATH=%PYTHONPATH% echo PYTHON_ROOT=%PYTHON_ROOT% echo. :END
Windows版のPythonなら py.exe がインストールされているだろうから、そちらを使ったほうがいいと思う。
> py --list Installed Pythons found by py Launcher for Windows -3.9-64 * -3.8-64 -2.7-32 -2.6-32 -2.5-32 -2.4-32 > py -2.4 -V Python 2.4.4 > py -2.7 -V Python 2.7.18 > py -3.9 -V Python 3.9.13
*1: もしかすると、自前のPythonバージョン切り替えbatファイル、pych.bat の中で、環境変数 PYTHONPATH まで設定していたのがマズかったのかもしれない。DOS窓を終了して再度開けば PYTHONPATH が未設定の状態になるので、それで正常動作してくれたのかも。
[ ツッコむ ]
#2 [nitijyou] 茶の間のPCを自室に戻した
茶の間に置いてあった Windows PC を ―― 朱鼓という名前の、円筒状のPCケースに入れてあるPCを、自室に持ってきた。
以前、親父さんが骨折してあまり動けなくなった際、茶の間でソリティアを遊べるようにと設置したものの。親父さん自身がそのPCの存在をすっかり忘れて「おい。これは一体なんだ?」と言い出す始末。埃だらけになってたので、置いといてもしょうがないなと。
そもそも茶の間には、先日お袋さんが会社から持ち帰ってきたものも含めて、3台もノートPCが置いてあるわけで。PCを使いたくなったらノートPCを使ったほうがいいよなと…。
以前、親父さんが骨折してあまり動けなくなった際、茶の間でソリティアを遊べるようにと設置したものの。親父さん自身がそのPCの存在をすっかり忘れて「おい。これは一体なんだ?」と言い出す始末。埃だらけになってたので、置いといてもしょうがないなと。
そもそも茶の間には、先日お袋さんが会社から持ち帰ってきたものも含めて、3台もノートPCが置いてあるわけで。PCを使いたくなったらノートPCを使ったほうがいいよなと…。
◎ 無線LAN子機を変えた。 :
今までつけていた無線LAN子機、ELECOM WDC-300SU2SWH (RTL8192CU) が不調。とにかく切れる。ガンガン切断される。熱で壊れたのかな…。
_300Mbps USB無線小型LANアダプタ - WDC-300SU2SWH
今まで Ubuntu機で使っていた ELECOM WDC-150SU2MBK (RTL8188EU? RTL8188EUS?) と交換してみた。こちらなら全然切断されない。
_150Mbps USB無線超小型LANアダプタ - WDC-150SU2MBK
どうもウチの環境は、300MBpsで接続できると謳う製品群と相性が悪い…。IO-DATA WN-G300UA (RTL8192CU) も頻繁に切断されてしまうから、ずっと埃を被ってるし…。
_300Mbps USB無線小型LANアダプタ - WDC-300SU2SWH
今まで Ubuntu機で使っていた ELECOM WDC-150SU2MBK (RTL8188EU? RTL8188EUS?) と交換してみた。こちらなら全然切断されない。
_150Mbps USB無線超小型LANアダプタ - WDC-150SU2MBK
どうもウチの環境は、300MBpsで接続できると謳う製品群と相性が悪い…。IO-DATA WN-G300UA (RTL8192CU) も頻繁に切断されてしまうから、ずっと埃を被ってるし…。
◎ Windows Updateが大変。 :
Windows Update をしてみたら、めちゃくちゃ時間がかかった。
Windows10 x64 21H1 の状態でパッチを全部当ててから、21H2 にアップグレードしたけど、ダウンロードは比較的サクサク進むものの、そこから先が…。再起動を指示した直後の終了時、「Windowsの準備をしています」系のメッセージが、少なくとも1時間ずっと表示されたまま。
仕方ないので放置して寝てしまったけど、結局全部終わるまで、12時間ぐらいかかった気がする。AMD Athlon 5350 という非力なCPUのせいだろうか。ベースクロックは低いけど4コア4スレッドだし、CドライブはSSDなのだけどな…。でも、TDP 25W のCPUだから遅いのも仕方ないか…。
ちょっとググってみたら、Core 2 Duo E8400 より遅いCPUらしい。もっとも、Core 2 Duo E8400 は TDP 65W。内蔵GPUも無し。Athlon 5350 はGPUも内蔵しているのに TDP 25W だから、たしかに省電力ではある…。
Windows10 x64 21H1 の状態でパッチを全部当ててから、21H2 にアップグレードしたけど、ダウンロードは比較的サクサク進むものの、そこから先が…。再起動を指示した直後の終了時、「Windowsの準備をしています」系のメッセージが、少なくとも1時間ずっと表示されたまま。
仕方ないので放置して寝てしまったけど、結局全部終わるまで、12時間ぐらいかかった気がする。AMD Athlon 5350 という非力なCPUのせいだろうか。ベースクロックは低いけど4コア4スレッドだし、CドライブはSSDなのだけどな…。でも、TDP 25W のCPUだから遅いのも仕方ないか…。
ちょっとググってみたら、Core 2 Duo E8400 より遅いCPUらしい。もっとも、Core 2 Duo E8400 は TDP 65W。内蔵GPUも無し。Athlon 5350 はGPUも内蔵しているのに TDP 25W だから、たしかに省電力ではある…。
◎ ケースがベタベタする。 :
この朱鼓というPCケース、真っ赤な色のケースなのだけど。触るとベタベタする上に、指や床に赤い塗料がくっついてしまう状態になってしまった。高温多湿な日本の気候では酷いことになる材料を吹きつけたのだろうな…。見た目をよくしたいと思ったのか、触り心地をよくしたいと思ったのか分からんけど…。
ウチにある、他のアレコレも、いくつか似たような状態になっていて…。Gateway製ノートPCも表面がベタベタになったし、DELL製タブレットPCもベタベタだし、Microsoft製キーボードのパームレストのラバー部分もベタベタだし。どうしてこういう材料を使ってしまうのか。
この手の失敗した設計?が、一切どこにもフィードバックされないまま、今もどこかで、いずれべたべたになってしまう製品として作られ続けているあたりが悲しい。こういった製品を設計/製造してる地域は、一体どういう気候なのか…。
ウチにある、他のアレコレも、いくつか似たような状態になっていて…。Gateway製ノートPCも表面がベタベタになったし、DELL製タブレットPCもベタベタだし、Microsoft製キーボードのパームレストのラバー部分もベタベタだし。どうしてこういう材料を使ってしまうのか。
この手の失敗した設計?が、一切どこにもフィードバックされないまま、今もどこかで、いずれべたべたになってしまう製品として作られ続けているあたりが悲しい。こういった製品を設計/製造してる地域は、一体どういう気候なのか…。
[ ツッコむ ]
以上、1 日分です。