virtualenvで作った環境を持ち運びやすいように(ポータブルに)するためのメモ。
具体的には、その環境でインストールしたライブラリを、移行した先でも一発で入れるための備え。
以下はWindowsでやってるけど、LinuxとかFreeBSDでも同じ。
準備:インストールしたライブラリの記録を作る
環境hogehoge
内でpyperclip
というライブラリのみをインストールした状態でpip list
すると;
(hogehoge) C:\Users\nobwak\Downloads\py\test>pip list
Package Version
---------- -------
pip 20.0.2
pyperclip 1.7.0
setuptools 45.3.0
wheel 0.34.2
(hogehoge) C:\Users\nobwak\Downloads\py\test>
こういう状態である。
しかし、pip, setuptools, wheelは、おおもとの環境でインストールされたもので、hogehoge
でインストールされたものではない。
移行先でも、わざわざ環境内でpip等をインストールする必要はない。
そこで--local
というスイッチを付ける。
また、移行先でライブラリをインストールする目的で、現環境のライブラリ一覧を取得する場合pip list
の結果では用をなさない。pip freeze
を使う。
最終的には以下のようにする。
(hogehoge) C:\Users\nobwak\Downloads\py\test>pip freeze --local
pyperclip==1.7.0
(hogehoge) C:\Users\nobwak\Downloads\py\test>
狙い通り、pyperclip
だけになった。
また、形式も文句なし。
ではこれを書き出す。
(hogehoge) C:\Users\nobwak\Downloads\py\test>pip freeze --local > requirements.txt
(hogehoge) C:\Users\nobwak\Downloads\py\test>
(hogehoge) C:\Users\nobwak\Downloads\py\test>deactivate
C:\Users\nobwak\Downloads\py\test>
さて、新しくfugafuga
という環境を作る。
C:\Users\nobwak\Downloads\py\test>virtualenv fugafuga
created virtual environment CPython3.8.1.final.0-32 in 7200ms
creator CPython3Windows(dest=C:\Users\nobwak\Downloads\py\test\fugafuga, clear=False, global=False)
seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=C:\Users\nobwak\AppData\Local\Temp\tmp2yu7x_rm\seed-app-data\v1)
activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
C:\Users\nobwak\Downloads\py\test>fugafuga\Scripts\activate.bat
(fugafuga) C:\Users\nobwak\Downloads\py\test>
出来立ての環境なので、当然、pyperclipはインストールされていない。
そこで、pip install
に先ほど書き出したライブラリリストを渡す。
書式はpip install -r (さっきのテキスト)
である。
(fugafuga) C:\Users\nobwak\Downloads\py\test>pip install -r requirements.txt
Processing c:\users\nobwak\appdata\local\pip\cache\wheels\76\ce\1d\b18ba37ad8d4e115814119ad2b5c6eec1bb680ac298e23405c\pyperclip-1.7.0-py3-none-any.whl
Installing collected packages: pyperclip
Successfully installed pyperclip-1.7.0
(fugafuga) C:\Users\nobwak\Downloads\py\test>
以上のように、インストールされる。
今回はライブラリ一個だけだけど、これが複数のライブラリでもOK。
むしろそういう時のため。
以上