pyenv-win+venvでPythonの仮想環境を作る話(オフライン環境)

日紀

Pythonのバージョン切り替え(Python3.8.7とPython3.7.9の切り替えなど)と仮想環境を簡単に作るには、Anacondaが便利である。AnacondaはIntel MKLを用いたnumpyなど数値計算ライブラリを提供しており、pipのものより速いことが知られている。ただし、2021年現在、Anacondaは商用利用では有償(200人以上の組織)であり、ハードルがある。また、Anaconda特有の問題もあり、Anacondaを使わずにPythonの環境を作りたいことがある。

もう一つの観点として、オフライン環境でのインストールがある。どうしてもオフライン環境を使わなければならない場合、インターネット経由でのPythonのインストールやライブラリのインストールができないため、特別に対応する必要がある。

この記事ではWindowsでのpyenvであるpyenv-winについて扱う。

オフライン環境でのpyenv-winの始め方

  1. インターネットが使える環境で、githubのpyenv-winのリポジトリから、pyenv-winのzipファイルをダウンロードする。または、git cloneする。そのダウンロードしたファイルをオフライン環境に何らかの手段で移動させる。
  2. オフライン環境のユーザーフォルダに.pyenvフォルダを作る。たとえばユーザー名がabe_hiroshiであれば、下記のフォルダを作る。
     C:\Users\abe_hiroshi\.pyenv 
  3. 上記のフォルダにpyenv-winのファイルを解凍して置く。binファイルのパスはたとえば次のようになる。
     C:\Users\abe_hiroshi\.pyenv\pyenv-win\bin 
  4. pyenvのパスを通す。パワーシェルを立ち上げ、次のコマンドを実行する。
    [System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
    [System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
    [System.Environment]::SetEnvironmentVariable('path', $HOME + "\.pyenv\pyenv-win\bin;" + $HOME + "\.pyenv\pyenv-win\shims;" + $env:Path,"User") 
  5. 上記のフォルダの下にcacheフォルダを作る。
     C:\Users\abe_hiroshi\.pyenv\cache
  6. cacheフォルダの下にPythonのソースコードを置く。ソースコードは公式サイトからダウンロードできる。ソースコードのパスはたとえば次のようになる。
     C:\Users\abe_hiroshi\.pyenv\cache\Python-3.8.7.tar.xz
  7. コマンドプロンプトを立ち上げ、次のコマンドでPythonをインストールする。
    pyenv install 3.8.7
  8. 次のコマンドを実施する。
    pyenv rehash
  9. ここまでできれば、次のコマンドでpyenvにインストールされているPythonのリストを見られる。
    pyenv versions

venvのオフラインでの使い方

次のコマンドでvenvの仮想環境を作れる。venvの仮想環境を作る前に、pyenvでPythonのバージョンを切り替えることに注意。

C:\Users\abe_hiroshi>pyenv shell 3.8.7
C:\Users\abe_hiroshi>python -m venv .venv

venvで作成した仮想環境に入るには、通常通り次のコマンドを用いる。仮想環境にうまく入れると、カレントディレクトリの前に(仮想環境の名前)が出る。

C:\Users\abe_hiroshi>.venv\Scripts\activate

ライブラリのはWheelファイルをpypiからダウンロードしてきて行う。たとえば、sixをインストールするときは次のような感じである。

(.venv) C:\Users\abe_hiroshi>pip install six-1.15.0-py2.py3-none-any.whl

wheelファイルが存在しない場合(たとえばet_xmlfileなど)、tar.gzをpipを使ってインストールする。

(.venv) C:\Users\abe_hiroshi>pip install et_xmlfile-1.0.1.tar.gz

オンライン環境

オンライン環境の場合は、pyenv-winのインストール作業のなかで、手順5および6が必要ない。もしプロキシを通す必要がある場合は、あらかじめ次のコマンドでプロキシを通しておく。

set HTTP_PROXY=http://username:password@proxy.hoge.com:8080
set HTTPS_PROXY=http://username:password@proxy.hoge.com:8080

また、オンライン環境の場合は、venvで作った仮想環境に入ったあと、wheelファイルやtar.gzファイルをダウンロードして移動させる必要がなく、直接pipを使えばよい。

コメント