LoginSignup
0
0

Conda 仮想環境の書き出しスクリプト 備忘録

Posted at

概要

minicondaをずっと使っていると仮想環境が出来すぎて、どれに何を入れてたかわからなくなるのはオイラだけか。そこで全部の仮想環境のインストール状況を書き出すスクリプトをChatGPTに作って頂いたので残す。
スクリプトは下記の2種類

  1. 全仮想環境のパケージ一覧をひとつのテキストファイルに書き出し
  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

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0