以下で説明する mkuv() と mkvenv() は、uv コマンドを使って 仮想環境をホーム下の共通場所 (~/venvs/<name>) に作成し、プロジェクト内に .venv へのシンボリックリンクを置く ワークフローを自動化する shell 関数です。これにより、以下のメリットがあります。
-
venvを中央管理できる。 - プロジェクト内にサイズの大きい
venvを置かずに済む。 - プロジェクトを移動した時に
venvが壊れる心配がなく、シンボリックリンクを貼り直すだけで良い。
mkuv() のスクリプトとその内容
GREEN='\033[0;32m'
CYAN='\033[0;36m'
NC='\033[0m'
mkuv() {
if [ -z "$1" ]; then
echo "Usage: mkuv <project_name>"
return 1
fi
local project_name="$1"
local venv_dir="$HOME/venvs/$project_name"
local project_dir="./$project_name"
# Check if project directory already exists
if [ -d "$project_dir" ]; then
echo "Error: Directory '$project_dir' already exists."
return 1
fi
# Check if venv directory already exists
if [ -d "$venv_dir" ]; then
echo "Error: venv directory '$venv_dir' already exists."
return 1
fi
# Create project (directory is automatically created)
echo "\nInitializing uv project ..."
uv init "$project_name"
# Move to project directory
cd "$project_name"
# Create ~/venvs/ directory if it doesn't exist
mkdir -p "$HOME/venvs"
# Create venv
uv venv "$venv_dir" &>/dev/null || return 1
echo "\n✓ Venv created at \`${CYAN}$venv_dir${NC}\`"
# Create symlink
ln -s "$venv_dir" .venv
echo "✓ Symlink created: .venv -> $venv_dir"
echo " Activate with: ${GREEN}source .venv/bin/activate${NC}"
# Create other common directories
mkdir -p notebooks
echo "\n✓ Project \`${CYAN}$(pwd)${NC}\` created successfully!"
}
-
uv init <project_name>でプロジェクトを初期化 -
uv venv ~/venvs/<project_name>でホーム下に仮想環境を作成 - プロジェクト内に
.venvというシンボリックリンクを張る(→ 実際の venv は~/venvs/<project_name>) - その他:
notebooksディレクトリを作成
実行例:
mkvenv() のスクリプトとその内容
mkvenv() {
if [ -z "$1" ]; then
echo "Usage: mkvenv <venv_name>"
return 1
fi
local venv_name="$1"
local venv_dir="$HOME/venvs/$venv_name"
if [ -d "$venv_dir" ]; then
echo "Error: venv: '$venv_dir' already exists."
return 1
fi
# Create ~/venvs/ directory if it doesn't exist
mkdir -p "$HOME/venvs"
# Create venv
uv venv "$venv_dir" &>/dev/null || return 1
echo "\n✓ Venv created at \`${CYAN}$venv_dir${NC}\`"
# Force create symlink
ln -sf "$venv_dir" ".venv" || return 1
echo "✓ Symlink created: .venv -> $venv_dir"
echo " Activate with: ${GREEN}source .venv/bin/activate${NC}"
}
- 既存プロジェクト内で実行し、
~/venvs/<venv_name>を作り、プロジェクト内にシンボリックリンクを張ります。
実行例:
プロジェクトを移動すると .venv のシンボリックリンクが壊れるので、新しくシンボリックリンクを張り直してください。

