python の仮想環境を作る・・概念は理解できるけど、ディレクトリ構成など複雑

1.pythonにおける仮想環境とは

jpholidayというモジュールをインストールしようとして、以前のように pip install module でできなかった。ArchWikiの記載もだいぶ変更されていた。最近ついていくのが大変(泣)

早速本題。

pythonのバージョンに影響されない固有の領域といった理解で良いと思われる

参考;https://qiita.com/shun_sakamoto/items/7944d0ac4d30edf91fde

環境は以下のとおり。

$ python -V
Python 3.11.6
$ pip -V
pip 23.3.2

2.仮想環境の作成と有効化

(1)作成

この時点で、できたファイル群を覗いてみる

drwxr-xr-x 5 xxx xxx 4096 Jan 8 16:42 .
drwxr-xr-x 16 xxx xxx 4096 Jan 8 16:42 ..
drwxr-xr-x 2 xxx xxx 4096 Jan 8 16:48 bin
drwxr-xr-x 3 xxx xxx 4096 Jan 8 16:42 include
drwxr-xr-x 3 xxx xxx 4096 Jan 8 16:42 lib
-rw-r--r-- 1 xxx xxx 179 Jan 8 16:42 pyvenv.cfg
drwxr-xr-x 2 xxx xxx 4096 Jan  8 16:48 .
drwxr-xr-x 5 xxx xxx  4096 Jan  8 16:42 ..
-rw-r--r-- 1 xxx xxx 2026 Jan  8 16:42 activate
-rw-r--r-- 1 xxx xxx  952 Jan  8 16:42 activate.csh
-rw-r--r-- 1 xxx xxx 2232 Jan  8 16:42 activate.fish
-rw-r--r-- 1 xxx xxx 9033 Jan  8 16:42 Activate.ps1
-rw-r--r-- 1 xxx xxx  263 Jan  8 16:42 pip
-rw-r--r-- 1 xxx xxx  263 Jan  8 16:42 pip3
-rw-r--r-- 1 xxx xxx  263 Jan  8 16:42 pip3.11

drwxr-xr-x 3 ken ken 4096 Jan 8 16:42 .
drwxr-xr-x 5 ken ken 4096 Jan 8 16:42 ..
drwxr-xr-x 2 ken ken 4096 Jan 8 16:42 python3.11

drwxr-xr-x 3 xxx xxx 4096 Jan 8 16:42 .
drwxr-xr-x 5 xxx xxx 4096 Jan 8 16:42 ..
drwxr-xr-x 3 xxx xxx 4096 Jan 8 16:42 python3.11

(2)有効化

ArchWili には、使用しているシェルを bash に前提して「source venv/bin/activate 」を実行しろと書いてあるが、そのようなものは見当たらまお。

上記の通り venv-name//bin/ の中にあるので、

(calholiday) $ ← コマンドプロンプトが venv-name になる。$ ← コマンドプロンプトがbashに戻る$ ← コマンドプロンプトがbashに戻る

ちなみに無効化は

$ ← コマンドプロンプトがbashに戻る

再び有効化して、よし準備ができたとばかりにモジュールをインストールしようとするが、

エラーになる

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try ‘pacman -S
python-xyz’, where xyz is the package you are trying to
install.

If you wish to install a non-Arch-packaged Python package,
create a virtual environment using 'python -m venv path/to/venv'.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.

If you wish to install a non-Arch packaged Python application,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. Make sure you have python-pipx
installed via pacman.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing –break-system-packages.
hint: See PEP 668 for the detailed specification.

ここから何度もあれやり、これやりの試行錯誤が続きます。最終的に成功したのは、

Collecting jpholiday
  Downloading jpholiday-0.1.8-py3-none-any.whl (9.8 kB)
Installing collected packages: jpholiday
Successfully installed jpholiday-0.1.8

[notice] A new release of pip is available: 23.2.1 -> 23.3.2
[notice] To update, run: python -m pip install --upgrade pip

どこにインストールされたのか?と思い探してみたところ、

drwxr-xr-x 10 xxx xxx 4096 Jan  9 16:49 .
drwxr-xr-x  3 xxx xxx 4096 Jan  8 16:42 ..
drwxr-xr-x  3 xxx xxx 4096 Jan  8 16:42 _distutils_hack
-rw-r--r--  1 xxx xxx  151 Jan  8 16:42 distutils-precedence.pth
drwxr-xr-x  3 xxx xxx 4096 Jan  9 16:49 jpholiday
drwxr-xr-x  2 xxx xxx 4096 Jan  9 16:49 jpholiday-0.1.8.dist-info
drwxr-xr-x  5 xxx xxx 4096 Jan  8 16:42 pip
drwxr-xr-x  2 xxx xxx 4096 Jan  8 16:42 pip-23.2.1.dist-info
drwxr-xr-x  5 xxx xxx 4096 Jan  8 16:42 pkg_resources
drwxr-xr-x  8 xxx xxx 4096 Jan  8 16:42 setuptools
drwxr-xr-x  2 xxx xxx 4096 Jan  8 16:42 setuptools-65.5.0.dist-info

したがってモジュールのインポートには、

>>>

3.まとめると

今回の仮想環境づくりだけで1日を要してしまった。慣れないこととはいえ、ちょっと・・・そこで、今までの経過をコマンド中心にまとめてみた。

ここまでの下準備が従来のやり方と異なっているということのようだ。これ以降は従前のpython の実行に映る。

コメント

タイトルとURLをコピーしました