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。
むしろそういう時のため。
以上