Zenn
😸

Pythonの仮想環境の備忘録

に公開

Pythonの仮想環境のことで、新しい学びがありました。
備忘録を兼ねて、書きたいと思います。

root に Python をインストールすると影響を受けるか?

結論:通常ユーザー (hoge) には影響しませんが、sudo を使ったときに影響を受ける可能性があります。

例えば:

通常の python コマンド (which python)
→ hoge ユーザーでは、~/.bashrc に設定した PATH の影響を受けます。
sudo python を実行すると、root の Python を使用する可能性がある
→ /usr/bin/python や /root/.pyenv/shims/python などが優先される。

インストールした Python のバージョンを確認

現在の Python のバージョンを確認

which python
python --version
which python3
python3 --version

これで、どの Python が使われているか分かります。

システムにインストールされた Python を確認

ls -l /usr/bin/python*
ls -l /usr/local/bin/python*
ls -l /root/anaconda3/bin/python*

pyenv をインストールしている場合

pyenv versions
pyenv which python

もし pyenv をインストールしているなら、グローバル Python の影響を回避できます。

root にインストールされた Python の影響をなくす方法

もし root にインストールした Python が影響を与えているなら、以下の方法で解決できます。

方法 1: /root/.bashrc から Python の PATH を削除

もし root に ~/.bashrc がある場合、python の export PATH が書かれていないか確認して削除します。

sudo nano /root/.bashrc

以下のような行を削除

export PATH=/root/anaconda3/bin:$PATH
export PATH=/root/.pyenv/shims:$PATH

削除したら、以下を実行して適用:

sudo source /root/.bashrc

方法 2: root の Python を削除

もし root に Python をインストールしてしまい、不要であれば削除してしまうのも手です。

sudo rm -rf /root/anaconda3

pyenv を削除
もし pyenv を root にインストールしてしまっていたら、以下を実行。

sudo rm -rf /root/.pyenv
sudo rm -rf /usr/local/bin/pyenv

ケース 影響 解決策
root に Python をインストール sudo python を実行すると影響を受ける可能性あり sudo -E python で環境変数を引き継ぐ
Anaconda を root にインストール sudo のとき /root/anaconda3/bin/python が使われる /root/anaconda3 を削除 or PATH から除外
pyenv を root にインストール root の .pyenv/shims が優先される /root/.pyenv を削除

deadsnakes と pyenv の影響を確認

deadsnakes とは、Ubuntu の PPA (Personal Package Archive) で Python の複数のバージョンを管理できるリポジトリです。
一方で pyenv は、ユーザーごとに独立した Python 環境を管理するツールです。

もし pyenv で Python を管理したいなら、deadsnakes の影響をなくします。

(1) deadsnakes の python の優先順位を下げる

現在 deadsnakes の Python が /usr/bin/python3.x にあるため、これを使わないようにするには、環境変数を調整します。

まず、現在の PATH を確認:

echo $PATH

もし /usr/bin や /usr/local/bin に python3.x がある場合、これよりも pyenv を優先させる必要があります。

以下のコマンドを .bashrc に追加して pyenv を優先させます。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

確認

which python
which python3
python --version
python3 --version

もし pyenv の Python になっていれば成功です。

メリット deadsnakes pyenv
簡単さ システム全体で管理しやすい ユーザーごとに異なる Python を管理可能
複数バージョン管理 インストールしたバージョンのみ pyenv コマンドで自由に切り替え可能
影響範囲 システム全体 ユーザーごとに管理
おすすめの用途 Ubuntu のシステムアプリを使う場合 pipenv や venv でプロジェクトごとに切り替えたい場合

Anacondaで仮想環境を使うときのコマンド

Anacondaで仮想環境を作る

conda create -n <仮想環境名> python=3.12

仮想環境をアクティブにする

conda activate

仮想環境から抜ける

conda deactivate

Pythonで仮想環境を使う

仮想環境を作る

windows、Mac/linux系共通

python -m venv 仮想環境名

pyenv virtualenvは、特定のPythonバージョンに基づいた仮想環境を簡単に作成するためのツールです。
まず、pyenvで指定のPythonバージョン(ここでは3.12.2)をインストールします:

pyenv install 3.12.2

次に、pyenv virtualenvコマンドを使用して仮想環境を作成します:

pyenv virtualenv 3.12.2 open_manus

これにより、Python 3.12.2をベースとしたopen_manusという名前の仮想環境が作成されます。

pyenv virtualenvを使用するには、pyenvとpyenv-virtualenvプラグインが正しくインストールされている必要があります。

仮想環境を特定のディレクトリに紐付ける場合は、.python-versionファイルを作成して環境名を書いておくことで自動的に仮想環境を切り替えることも可能です。

仮想環境をアクティブにする

Windows

.\仮想環境名\Scripts\activate

Mac/linux系

source 仮想環境名/bin/activate

pyenvで作った仮想環境の時は、以下を実行します:

pyenv activate open_manus

仮想環境から抜ける

windows、Mac/linux系共通

deactivate

pyenvで作った仮想環境から抜ける場合は:

pyenv deactivate

Discussion

ログインするとコメントできます