【Python環境構築】環境変数について解説!
本記事は、Pythonの二種類の「環境変数」について書いています。Pythonコマンドを実行してPATHが見つからないと言われた場合やライブラリやモジュール等をインポートできない場合の対処方法について解説していきます。
Pythonと環境変数
Pythonで設定する「環境変数」には二種類あります。一つは環境変数「PATH」の設定です。こちらは、コマンドプロンプトやターミナルでPythonコマンドを実行して「PATHが見つからない」とエラーが出た場合に設定します。もう一つは「PYTHONPATH」です。Pythonコマンドは通っても、プログラムやインタプリタからモジュール等をインポートできない場合に設定します。それぞれの設定方法について、以下にまとめました。
Python自体の環境変数の設定
コマンドプロンプトやターミナルなどからPythonを呼び出すとき、PythonコマンドのPATHが環境変数に設定されている必要があります。
環境変数が設定されていない場合は、PATHが見つからないといったエラーが表示されることがあります。PATHの設定がされていない場合は、ターミナルが呼び出されたコマンドの場所がわからないため、コマンドを実行することができません。
コマンドのあるフォルダに移動して呼び出す場合は問題ありませんが、プログラムのある場所などからpythonを呼び出すケースは多く、その際に任意のフォルダから起動できないのは大変不便です。以下では、WindowsとLinuxの場合でのPATHの通し方を解説します。
Windowsの場合
通常Windowsの場合はインストーラーからインストールする時にPATHを加える設定にしてインストールすれば手動で設定する必要はありません。
もしインストールしていない状態であれば、インストーラーの以下画面から、“Add Python 3.x to PATH”をチェック(画像の①)して「→Install now」をクリック(画像の②)することで、インストーラーが環境変数への設定を行うことができます。
Windowsの場合、正常にPythonをインストールしてPATHが設定されているかどうかは、コマンドプロンプトやPowerShellで「python」コマンドを打つことで確認できます。以下の画像は正常にインストールできたときに、コマンドプロンプトからPythonインタプリタを起動した場合の画面です。
pathが正しく通っていない場合は、以下のようなエラーが表示されます。
このような場合は以下の手順で設定します。画像はWindows10の場合の例になります。
まず、インストール先のフォルダを探します。
タスクバーの左端にある検索ボックスに「アプリ:python」と入力(画像の①)し、検索候補の中でPATHを設定したいバージョンのPythonのデスクトップアプリを右クリックします。
ここで検索ボックスがない場合は、タスクバーの空いている箇所を右クリック>Cortana>検索ボックスを表示(B)で検索ボックスを表示できます。
「ファイルの場所を開く」をクリックします。
Python本体のショートカットを右クリックし、プロパティを選択して開きます。
ファイルの場所を開く(E)をクリックします。
さきほど開いた先のフォルダがPATHを追加するアドレスになります。python.exeがPythonコマンドの実態です。
また、直下の「Scripts」フォルダにはPythonのパッケージ管理システム等が入っているため、ついでにPATHに追加しておきます。
この例の場合では、以下を追加することになります。
C:\Users\user_name\AppData\Local\Programs\Python\Python37-32
C:\Users\user_name\AppData\Local\Programs\Python\Python37-32\Scripts
Pythonの実行プログラムなどはPythonをインストールしたディレクトリに格納されています。どのディレクトリからでもPythonを起動するには、今回Pythonをインストールした「C:\pg\Python36\」ディレクトリに対してPATHを設定します。
先ほどと同じ手順で「C:\pg\Python36\Scripts\」を追加して下さい。
Linuxの場合
Linuxで元々Pythonがプリインストールされている場合はPATHもすでに設定されていて、ターミナルから起動されたときにプリインストールされている場所からコマンドを探すことがあります。この場合も手動での設定は不要です。
Linuxの場合、正常にPythonをインストールしてPATHが設定されているかどうかは、ターミナルで「python」コマンドを打つことで確認できます。以下の画像は正常にインストールできたときに、UbuntuのターミナルからPythonインタプリタを起動した場合の画面です。
通常pythonはデフォルトの場合「/usr/bin/」などにインストールされています。
もしPATHが設定されておらず、Pythonコマンドが見つからないとエラーが出る場合は以下の手順で設定します。
ターミナルを起動し、ログインシェルがbashの場合は~/.bash_profileを、zshの場合は~/.zshenvをvi等のエディタで下記のように追記します。
(bash/zshが分からない場合は、echo $SHELLでどちらのログインシェルか確認してください。)
下記の例は、コマンドが存在する場所を「/usr/bin/」とした場合の例です。現在設定されているPATHに追加する形(「$PATH:」の記述部分)で設定します。
export PATH=$PATH:"/usr/bin/"
設定した内容を反映するには、ターミナルを再起動するか下記のコマンドを実行します。
・bashの場合
source ~/.bash_profile
・zshの場合
source ~/.zshenv
Pythonモジュールの環境変数の設定
ターミナル等で「python」コマンドを実行すると正常にPythonを起動できるのに、pythonで書いたプログラムやインタプリタ等で「import xxx(モジュール名)」と書いた際に、以下のように「モジュールが見つからない」とのエラーが出る場合があります。
以下はインタプリタからimportを試みた場合です。
>>> import mymodule
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'mymodule'
>>>
この場合、モジュールをインポートする前にモジュールのある場所(上記の例ではモジュールmymoduleの格納フォルダやディレクトリ)をプログラムやインタプリタで検索できるようにしておく必要があります。これには、以下の二通りの方法があります。
- import前に、sys.pathにモジュール検索パスを追加しておく
- 環境変数PYTHONPATHにPATHを追加しておく
sys.pathを使う場合(プログラム内だけで有効)
プログラム内もしくはインタプリタでimportする前にsys.pathでモジュール検索パスを追加する方法です。標準ライブラリのsysモジュールのsys.pathというリストオブジェクトに格納されています。プログラムやインタプリタでsysをインポート後、print(sys.path)でその時点のモジュール検索パスの一覧が出力されます。
以下はPythonインタプリタで実行した例です。プログラム内に同様の記述をしても実行できます。
>>> import sys
>>> print(sys.path)
先ほど述べたように、sys.pathはリストオブジェクトのためappend()メソッドでリストに追加することで、新たに検索パスを追加することができます。
例えば、以下のように独自に開発したモジュールを格納場所「C:\Users\user_name\Documents\module」に格納したとします。これを呼び出せるようにします。
※ユニコードエスケープのため、WindowsのPATHは以下の例のように「\」を「\\」とする必要があります。
これをsys.pathに追加してインポートすると以下のようになります。
>>> import sys
>>> sys.path.append('C:\\Users\\user_name\\Documents\\module')
>>> import mymodule
これでさきほどのエラーがでなくなりました。
この方法は、プログラム内や一回のインタプリタ起動でのみ有効です。恒久的に杭化するのであれば次の環境変数PYTHONPATHを使う方法を参照して下さい。
環境変数PYTHONPATHを使う方法
頻繁に呼び出すモジュールの場合はプログラムごとやインタプリタでの対話ごとに検索パスを追加するのは非効率です。恒久的にモジュールを実行できるようにするには、対象のモジュール格納場所を環境変数PYTHONPATHに設定します。PYTHONPATHの設定は、前の方の「Python自体の環境変数の設定」の章で説明したPATHの設定をPYTHONPATHに読み替えて行ってください。
Pythonが起動しない!?そんなときのPATH(パス)設定の確認方法を解説
まとめ
本記事では、python自体の環境変数やモジュールの環境変数の設定について書きました。Pythonコマンドを実行してPATHが見つからないと言われた場合や、インタプリタやプログラムなどからライブラリやモジュール等をインポートできない場合は、Pythonの環境変数にPATHやPYTHONPATHにPythonコマンドやモジュールの格納場所を追加します。
本記事に出るようなエラーが表示された時は本記事の内容を試してみてください。
また、Pythonの勉強方法などについて詳しく知りたい場合は以下の記事をご覧ください。