1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Git BASHでPython仮想環境をPoetryを使って作成 - OneDriveの同期を避ける

Last updated at Posted at 2024-10-23

はじめに

Git BASHでWindows環境の特に開発環境を管理してみたいという人向けです。

Windows環境でのPython環境で一番嫌な所はOneDriveの同期だと思います。開発フォルダーをOneDrive同期対象のディレクトリに作ってしまうと、自動に同期されて思わぬ量のファイルが同期されてしまいます。ファイル管理ではバックアップとして便利ですが、開発環境を置くと大変な目にあいます。そこで今回は、Poetryを利用した仮想環境の作り方とOneDriveの同期を避ける方法を書置きします。

自分の要件

アプリ開発や機械学習プロジェクトでは、様々はファイルをフォルダーに保存します。個人プロジェクトでは、プロジェクトファイル(例えばワードとかエクセル)はOneDriveでバックアップはありがたいです。但し、OneDriveディレクトリにPython環境を構築した場合、大量の依存ファイルの同期されますので、出来るだけ避けたいです。

WindowsのOneDriveの同期の現在

現在(10/25/2024)では、プロジェクトフォルダーを同期バックアップ排除にするには、OneDriveのアイコンをクリックして、設定->アカウント->フォルダの選択を選び、特定フォルダを除外しますが、毎回プロジェクトの為に、このフォルダを選択するのも面倒くさいです。

今回の解決方法

現在は、Poetryを利用して、仮想環境の依存ファイルフォルダーだけ、OneDrive配下ではな箇所に設定し、あとは通常どうりPoetryで管理していきます。まずPython環境からという方はここのリンクからインストールしておいてください。https://qiita.com/iptracej/items/4e9018a495d465af82b3

Poetry設定方法

想定の環境は、Windows 11, GitBash, VScodeです。Linux等で開発などをしていますので、Bashでシェルコマンドは統一しています。

ますインストールします。

curl -sSL https://install.python-poetry.org | python.exe -

.bashrcにパスを追加し、実行。

echo 'export PATH="$PATH:/c/Users/YourUsername/AppData/Roaming/Python/Scripts"' > .bashrc

source .bashrc
poetry --version

Poetryで仮想環境のディレクトリを設定。OneDriveが関与しないディレクトリを設定。

mkdir C:\Python\venvs
poetry config virtualenvs.path 'C:\\Python\venvs'
# poetry config virtualenvs.path 'C:/Python/venvs' 

次に自分のプロジェクト(OneDrive配下のディレクトリ)に移動します。

cd ~ # ユーザのトップディレクトリに移動
cd OneDrive/Documents/ProjectA/Project1 # プロジェクトディレクトを指定

Poertyで依存パッケージの初期設定

poetry init  # ここでインタラクティブに設定。必要に応じてpoetry addを実行

Poetryで依存パッケージ管理のみの場合、package-modeを無効化

vi pyproject.toml 
# Under [tool.poetry]
package-mode = false

README.mdの作成

echo "# hw9 Project" > README.md

Poetryで依存パッケージのインストール

poetry install --no-root # ルートパッケージを除いてインストール

仮想環境の実行と停止

poetry shell #実行
exit # 停止

途中でパッケージの追加 (自動でインストール)

poetry add <your package name> # poetry add numpy

スクリプトの実行

python your_script.py

仮想環境をアクティブ化せずに直接コマンドを実行する場合は、poetry runを使用します。

poetry run python your_script.py

Poetryの動作中確認のプロンプトは、以下のスクリプトを.bashrcに追加してください。

## Define your custom base prompt with colors
PS1_BASE='\[\e[34m\]\u@\h\[\e[0m\] \[\e[33m\]\w\[\e[0m\]\$ '

# Function to update PS1 with the virtual environment name
function update_ps1() {
    # Check if the shell is exiting or in a subshell (to avoid updating PS1 when exiting)
    if [[ "$BASH_COMMAND" == "exit" ]]; then
        return  # Skip updating PS1 if 'exit' is being executed
    fi

    # Update the prompt based on whether the virtual environment is active
    if [[ -n "$VIRTUAL_ENV" ]]; then
        # Display '(poetry)' in green if a virtual environment is active
        PS1='\[\e[32m\](poetry)\[\e[0m\] '"$PS1_BASE"
    else
        PS1="$PS1_BASE"
    fi
}

# Save the original prompt
PS1_ORIG=$PS1

# Hook the function to PROMPT_COMMAND so it runs before each prompt
PROMPT_COMMAND=update_ps1

# Optionally, add a manual deactivate command for your virtual environment
function deactivate_virtualenv() {
    if [[ -n "$VIRTUAL_ENV" ]]; then
        deactivate  # Deactivate virtual environment if active
        echo "Virtual environment deactivated."
    fi
}

# Optional: alias 'exit' to deactivate virtual environment first
alias exit='deactivate_virtualenv && exit'

プロンプトに(poetry)と表示されます。
image.png

VSCodeでのJupyterNotebookのような実行は、以下をインストールします。

poetry add ipykernel

VSCode上 Shift + Return で実行できます。

以上が設定でした。Happy Hacking!!!

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?