1つのパソコンには、基本的には1つのバージョンのPythonしか入れないことがベターな選択です
これは、異なるバージョン同士があることで不具合が出てしまうからです
画像生成Aiを楽しむ人にとっては、StableDiffusion WebUIを動かすためには、Python3.10.6でないと不具合が出てしまうので、ほかのアプリケーションを動かしたい時には困った問題です
そんなお悩み解決のために、Pythonの異なるバージョンを使い分ける方法についてまとめておきます
Pythonの異なるバージョンを使い分ける方法。
この記事はプログラマーの方々の助言を参考に執筆しました。
情報を正確かつ最新に保つためには費用がかかります。
もし記事で紹介したソフトウェアにご興味があれば、私たちが選んだ信頼できるスポンサーのリンクをご利用ください。皆様のご支援が私たちの助けとなります。
StableDiffusionに関する以下のコンテンツとコラボさせて頂いてますので、ご興味ありましたら覗いてもらえたら嬉しいです
Pythonのバージョンの使い分けにおいて、最も不具合が起こりにくい方法を選ぶ際は、それぞれの方法の特徴とプロジェクトのニーズを考慮する必要があります。
各方法の特徴と、その安定性についてまとめました
ドライブを分ける
特徴: 物理的なドライブまたはパーティションを異なるPython環境に割り当てる方法です。
安定性: 高い。物理的に隔離されているため、環境間の干渉はほとんどありません。
考察: 物理的な分割は最も隔離度が高いが、リソースが限られている場合や複数のPython環境を頻繁に切り替える必要がある場合は不便です。
この方法は、StableDiffusion WebUIのバージョン1から6まで全て構築している私の体験によるものですが、非常に安定してていいですね
Pythonのバージョンの数だけドライブが必要になるのがネックです…
CドライブにStableDiffusion WebUIをインストールしている人は、あまりPythonの問題での不具合似合うことがないと思いますが、実はC以外のドライブにインストールしている人は謎の不具合に合うんですよね
私も最初は、Cドライブでしてたんですが、保存したファイルの量が多くなるにつれて、システムが重くなるデメリットがありので、増設のEドライブを作りました。
そちらにPython3.10.6を入れ、StableDiffusion WebUIバージョン2~6までを管理しています
次の項目で説明するPATH変数を指定するやりかたと組み合わせて使っています
不具合が一切出ません
1つコツがある様で、EドライブにPython3.10.6のインストールだけでなくPATH変数を指定するといい様ですね
つまり「EドライブのPythonファイルは、EドライブにあるPythonを使え」と紐づけるのだ
PATH変数を指定する
特徴: システムのPATH環境変数に特定のPythonバージョンのパスを指定します。
安定性: 中程度。正しく設定されていれば安定していますが、誤った設定は混乱を招きます。
考察: 単純で直接的ですが、複数のバージョンを頻繁に切り替える場合は不便で、設定ミスによる問題が発生しやすいです。
PATH変数とは
PATH変数は、オペレーティングシステム(OS)がプログラムや実行可能ファイルを探すために使用するパスのリストです。
設定方法
システムのPATH環境変数にパスを追加するには、Windowsのシステム設定を通じて行います。
コマンドライン(CMD)を使って一時的にPATHを設定することもできますが、これは新しいコマンドプロンプトセッションや再起動後には失われます。
恒久的な変更を行うには、システムの設定を直接変更する必要があります。
以下は、Windowsで恒久的にPATH環境変数を変更する手順です
スタートメニューをクリックし、「システムのプロパティ」または「システム設定」と検索します。
「システムのプロパティ」を開き、「詳細設定」タブを選択します。
「環境変数…」ボタンをクリックします。
「システム環境変数」セクションまたは「ユーザー環境変数」セクションにあるPATHまたはPath変数を選択し、「編集…」をクリックします。
「新規」をクリックし、C:/Python311/のような新しいパスを入力します。
OKをクリックしてすべてのダイアログボックスを閉じ、変更を保存します。
これで、Python 3.11へのパスがシステムのPATH環境変数に追加され、コマンドプロンプトや他のアプリケーションからアクセスできるようになります。
同様の手順で他のPythonバージョンのパスも追加できますが、PATHに追加された順序に注意してください。
最初に見つかったパスのバージョンが優先的に使用されます。
バージョン管理ツールを使う(例:Docker/pyenv(pyenv-win)/anaconda)
特徴: Dockerのようなツールを使って複数のPythonバージョンを管理します。
安定性: 高い。バージョンの切り替えが容易で、環境設定の誤りを防ぐことができます。
考察: 複数のバージョンを管理するのに適しており、ユーザーによる設定ミスを最小限に抑えることができますが、設定がやや複雑になることがあります。
また、一部のアプリケーションや環境ではDockerのようなツールがうまく動作しない場合があります。
pyenv (pyenv-win)
メリット
専門的なバージョン管理
pyenvはPythonバージョンの管理に特化しており、複数のバージョンを簡単にインストール、切り替え、管理することができます。
シンプルなインターフェース
コマンドラインインターフェースがシンプルで、使いやすいです。
多様なバージョンサポート
様々なバージョンのPythonをサポートしており、特定のバージョンへの切り替えが簡単です。
デメリット
パッケージ管理の不在
pyenvはPythonのバージョン管理に特化しており、パッケージ依存関係の管理は行いません。通常は、pipやvenvと組み合わせて使用されます。
初期設定の複雑さ
初期設定がやや複雑で、システムの環境変数の調整が必要になることがあります。
anconda
メリット
包括的な環境管理
Anacondaは、Pythonのバージョン管理に加えて、広範囲のパッケージとその依存関係の管理も行います。これにより、Pythonを中心とした総合的な開発環境を提供します。
非Pythonパッケージのサポート
Anacondaは、Python以外のパッケージやライブラリも管理でき、特に科学計算やデータ分析での使用に優れています。
クロスプラットフォーム
Windows、macOS、Linuxで利用可能で、異なるプラットフォーム間での一貫した環境構築を支援します。
デメリット
重量級
Anacondaは多機能であり、システムリソースの消費が大きく、セットアップが複雑になることがあります。
学習
多機能であるため、特に初心者にとっては使いこなすまでに時間がかかることがあります。
Anacondaは、Condaを含む環境で、より多くのパッケージとツールがプリインストールされている点が特徴です。
CondaはAnacondaの一部としても機能しますが、単独での使用も可能です。
Anacondaは、特にデータサイエンスや機械学習に関連する多くのパッケージを含んでいるため、これらの分野での作業に特に適しています。
毎回コマンドラインからの実行
特徴: コマンドラインを使用して、毎回Pythonスクリプトを手動で実行します。
安定性: 中程度。スクリプトの実行は直接的で制御が容易ですが、環境の違いによっては意図しない結果を招くことがあります。
考察: コマンドラインからの実行は、特定の環境設定や依存関係に依存しないため柔軟ですが、繰り返しの作業が多くなり、効率が低下することがあります。
また、コマンドラインの操作に慣れていないユーザーには不便である可能性があります。
これは、特に開発環境が統一されていない場合や、異なる環境での実行が頻繁に必要な場合に問題となることがあります。
コマンドラインから特定のバージョンのPythonを直接実行する方法では、起動するたびに毎回そのバージョンのPythonのフルパスを指定する必要があります。
毎回やるのはめんどくさいね…
この方法は、以下のような場合に特に便利です
異なるバージョンのPythonがシステムにインストールされている場合、コマンドラインから直接フルパスを使用して特定のバージョンを指定することで、どのバージョンを使用するかを明確に制御できます。
特定のスクリプトやタスク用
特定のPythonスクリプトやタスクが特定のPythonバージョンでのみ動作する場合、コマンドラインからそのバージョンを指定して実行することができます。
使用例
Python 3.10を使用:
C:\Python310\python.exe スクリプト名.py
Python 3.11を使用
C:\Python311\python.exe 他のスクリプト名.py
注意点
手動での指定が必要
この方法では、Pythonを実行するたびに適切なフルパスを手動で指定する必要があります。
環境変数への影響なし
この方法では、システムのPATH環境変数を変更する必要はありません。特定のインスタンスの実行にのみ影響を与えます。
このアプローチは、シンプルで直接的ですが、頻繁に異なるバージョンを切り替える必要がある場合は、Dockerのようなバージョン管理ツールを使用する方が効率的です。
また、プロジェクトごとに異なる環境を管理する場合は、仮想環境の使用を検討することをお勧めします。
仮想環境を使う
特徴: プロジェクトごとに独立したPython環境を作成します。
安定性: 非常に高い。プロジェクト間での干渉がありません。
考察: プロジェクトごとの依存関係を完全に隔離できるため、複数のプロジェクトを並行して進行する場合に最適です。
仮想環境を使うことがベストな選択ですね
仮想環境について
仮想環境って何?
仮想環境とは、あるプロジェクト専用の小さな「作業エリア」のようなものです。
コンピュータにPythonがインストールされていると、通常は全てのプロジェクトが同じPythonを使います。
しかし、仮想環境を使うと、プロジェクトごとに違う「作業エリア」を作れるので、それぞれで違うPythonのバージョンや追加のライブラリ(Pythonのプログラムを助けるツール)を使うことができます。
この作業エリアを、仮想環境という訳です
本体とは別に、ここだけのパソコン環境を作ったので、この中は○○っていうルールにするからヨロシク!みたいな感じね
仮想環境の作り方
まず、コンピュータのコマンドライン(CMDで開く黒い画面)を開きます。
プロジェクトのフォルダに移動します。
(例えば、StableDiffusion WebUIのあるフォルダです)
次に、python -m venv myenv というコマンドを打ちます(myenvは仮想環境の名前です)。
これで、プロジェクト用の新しい仮想環境が作られます。
仮想環境のアクティブ化(活性化)
Windowsでは myenv\Scripts\activate
macOSやLinuxでは source myenv/bin/activate と打ちます。
これをすると、プロンプト(コマンドラインの最初に表示される文字)が変わり、仮想環境の名前が表示されます。
これで、仮想環境が始まります。
仮想環境での作業
仮想環境でのプログラミング
仮想環境がアクティブ化されたら、その中でPythonのプログラムを書くことができます。
ここでの作業は、他のプロジェクトやコンピュータ全体には影響しません。
必要なツールを追加
この仮想環境では、新しいライブラリ(プログラミングの助けになるツール)を自由に追加できます。
「pip install ライブラリ名」と打つと、そのライブラリが仮想環境にインストールされます。
GitHubからインストールする時には、git clone と、うちます)
プロジェクト専用の設定
この仮想環境はプロジェクト専用です。つまり、ここでの設定やインストールしたライブラリは、このプロジェクトにのみ適用されます。
仮想環境を終了する
仮想環境を閉じます
作業が終わったら、deactivateと打ちます。
これで仮想環境が非活性化され、仮想環境が閉じます。
通常の状態に戻る
仮想環境を「非活性化」すると、元のコンピュータのPython環境に戻ります。これで、他の普通の作業を続けることができます。
仮想環境の利点
プロジェクトごとにカスタマイズ
仮想環境を使うと、各プロジェクトに最適な設定やツールを用意できます。他のプロジェクトとは完全に独立しているので、自由に試すことができます。
安全でクリーン
仮想環境は、コンピュータ全体に影響を与えることなく、新しいライブラリや設定を試すことができる安全な場所です。使い終わったら簡単に閉じることができます。
仮想環境の注意点
各プロジェクトごとに設定
仮想環境は、それぞれのプロジェクトのために個別に作成します。
プロジェクトごとに異なる仮想環境を持つことになります。
アクティブ化(活性化)と非活性化
作業を始める時は必ず仮想環境をアクティブ化し、終わったら「非活性化」することが大切です。
これで、プロジェクトがきちんと独立した状態を保ちます。
仮想環境を使うと、各プロジェクトが自分だけの小さな仮想環境を持ち、安全かつ効率的に作業を進めることができます。
そもそもPythonを複数インストールしてはダメなの?
同じディレクトリに異なるバージョンのPythonを置くことは、いくつかの問題を引き起こす可能性があります。
主な懸念点は以下の通りです:
ファイルの上書きと混乱
Pythonのインストールでは、多くの共通ファイル(実行可能ファイル、ライブラリ、スクリプトなど)が使われます。
異なるバージョンのファイルが同じディレクトリに存在すると、ファイルの上書きや混乱が発生する可能性があります。これにより、どちらかまたは両方のバージョンが正常に機能しなくなることがあります
実行時の混乱
システムがどのバージョンのPythonを実行すべきかを判断できなくなることがあります。
特に、コマンドラインからpythonやpython3などのコマンドを使った場合、どのバージョンが起動されるか予測が困難になります。
環境変数の問題
システムのPATH環境変数にPythonの実行可能ファイルのパスが含まれている場合、異なるバージョン間で競合が生じる可能性があります。
これは特に、外部からPythonスクリプトを実行する場合やIDEを使用する場合に問題を引き起こす可能性があります。
パッケージ管理の問題
Pythonのパッケージは、特定のバージョンに依存していることが多いです。同じディレクトリに異なるバージョンが存在すると、パッケージの依存関係が正しく解決されない可能性があります。
ただ単にPythonを複数インストールしてはダメ
同じディレクトリに異なるバージョンのPythonを置くことは、多くの問題を引き起こす可能性が高く、避けるべきです。バージョンごとに別々のディレクトリにインストールし、必要に応じてバージョン管理ツールを使用するのが最善のアプローチです。
StableDiffusionに関する以下のコンテンツとコラボさせて頂いてますので、ご興味ありましたら覗いてもらえたら嬉しいです
結論
最も安定する異なるバージョンのPythonを使い分ける方法は、仮想環境を作るか、バージョン管理ツールを使う事です
仮想環境はプロジェクトごとにPython環境を完全に隔離できるため、最も不具合が起こりにくいと考えられます。
自分1人だけで作業をするのであれば、仮想環境を作るのがベターな選択です
バージョン管理ツールを使うと、他者との共同で作業を進めるようなプロジェクトをするのに便利です