概要
minicondaをずっと使っていると仮想環境が出来すぎて、どれに何を入れてたかわからなくなるのはオイラだけか。そこで全部の仮想環境のインストール状況を書き出すスクリプトをChatGPTに作って頂いたので残す。
スクリプトは下記の2種類
- 全仮想環境のパケージ一覧をひとつのテキストファイルに書き出し
- 全仮想環境のrequirements.txtの書き出し
AnacondaならGUIがありそうなのでそこで管理できるのかもしれないが、ライセンスの関係で使ったことがないので知らん。
- 実施期間: 2024年2月
- 環境:Ubuntu18.04LTS, Windows11
- Python: miniconda
1. Ubuntu
1.1. パケージ一覧の書き出し
実行するとconda_envs_packages.txtが作成され、全仮想環境内のパケージが書き出される。やっていることはconda list
の実行結果を書き出しているだけ。
conda_env.sh
#!/bin/bash
# 出力ファイルの設定
outputFile="conda_envs_packages.txt"
# 既存の出力ファイルを削除
if [ -f "$outputFile" ]; then
rm "$outputFile"
fi
# 仮想環境のリストを取得し、それぞれのパッケージリストを出力
while read line; do
envName=$(echo $line | awk '{print $1}')
echo "[$envName]" >> "$outputFile"
conda list -n $envName >> "$outputFile"
echo "" >> "$outputFile"
done < <(conda env list | tail -n +3)
echo "Done."
1.2. 全仮想環境のrequirements.txtの書き出し
実行すると、[仮想環境名]_requirements.txtの名前で仮想環境数分のrequirements.txtが書き出される。新しいminiconda環境へ、まるっと引っ越しが楽になる。
conda_req.sh
#!/bin/bash
# requirementsフォルダの作成
requirementsDir="requirements"
if [ ! -d "$requirementsDir" ]; then
mkdir "$requirementsDir"
fi
# 仮想環境のリストを取得し、それぞれのrequirements.txtを作成
while read line; do
envName=$(echo $line | awk '{print $1}')
conda list -n $envName --export > "$requirementsDir/$envName"_requirements.txt
done < <(conda env list | tail -n +3)
echo "Done."
2. Windows11
いずれもUbuntuと同じ
2.1. パケージ一覧の書き出し
conda_env.bat
@echo off
setlocal
set outputFile=conda_envs_packages.txt
if exist %outputFile% del %outputFile%
for /f "skip=2 tokens=1" %%i in ('conda env list') do (
echo [%%i] >> %outputFile%
conda list -n %%i >> %outputFile%
echo. >> %outputFile%
)
pause
echo Done.
endlocal
2.2. 全仮想環境のrequirements.txtの書き出し
conda_req.bat
@echo off
setlocal
set requirementsDir=requirements
if not exist %requirementsDir% mkdir %requirementsDir%
for /f "skip=2 tokens=1" %%i in ('conda env list') do (
conda list -n %%i --export > "%requirementsDir%\%%i_requirements.txt"
)
pause
echo Done.
endlocal
以上