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