LoginSignup
4
6

More than 5 years have passed since last update.

pipenvを利用するときは、必ずPythonにパスを通すこと

Posted at

Windows上のPythonでPIPENVを利用したらいろいろはまったのでメモ。

そもそもpipenvとは

Pythonといえばpip installコマンドなどで簡単に様々なライブラリをインストールし使うことができますが、プロジェクトごとにどんなライブラリを使っているか、どのバージョンのライブラリを使っているかわかりにくくなるため、プロジェクト別の管理が必要になることがあります。

PHPのComposerなどのように、あらかじめプロジェクト内にライブラリをダウンロードし、ほかのプロジェクトとの衝突をなるべく避けたい。そんな時に便利なのがpipenvです。

参考

やろうとしたこと

とりあえずpipenvのごくごく基本的な利用方法については上記記事を読んでもらうとして、pipenvを使えばプロジェクトごとに必要なライブラリをダウンロードした仮想環境(venv)を作ることができます。

この環境で実行することで、ライブラリのバージョンがほかのものと衝突するという問題を防げるほか、ほかのPCで作業を続行する際の環境構築が容易になります。

今回はこのpipenvを使って、いくつかのライブラリをダウンロードした環境でスクリプトを実行しようとしました が、上手くいかずに2,3時間ほど悩みました。

何が上手くいかなかったか

仮想環境上にダウンロードしたライブラリが全く読み込まれない という問題が発生しました。

その後何度か試行錯誤し、とりあえずデバッグ実行したときはうまく動作することがわかりましたが、通常通りスクリプトを実行しようとしたときは一切ライブラリを読み込みませんでした。

動かなかった原因

いろいろ調べた結果、とりあえず以下の要因があることがわかりました。

  • Pythonにパスを通さず、C:\Windows\Py.exeを経由でPythonを実行しようとしていたこと
  • 実行時PYTHONPATHに、仮想環境のフォルダ(.venv)が含まれていなかったこと

pipenv install --devコマンドを実行後、pipenv shellを実行し、そのままプロジェクト内のPythonスクリプトを実行しようとしていたのですが、それではPYTHONPATHに仮想環境のフォルダが含まれないようです。

やってわかったこと

  • pipenvを使う場合は、必ずPythonにパスを通すこと(Py.exeは使わないこと)
  • プログラムを実行するときは、pipenv run [任意のコマンド]というふうにコマンドを指定すること(たとえばpipenv run python .\main.py/長いなと思った場合、上記記事に書かれているとおり、PipFileのscriptsセクションにコマンドを追加すること)
  • もしpipenvとだけコマンドを入れて動かない場合は、パスが通っていない可能性が高いので、一度Pythonをアンインストールして、公式のインストーラよりインストールし直すと良いかもしれません(ついでに念のため、一度PCからサインアウトするか、再起動することをお勧めします)

pipenv shellは結局どう使うのかわかりませんでした。どうすれば良かったのだろう?(一応pipenv shellでShellを切り替え直後に、pythonコマンドでインタラクティブモードを起動すると、そこでは仮想環境にパスが通った状態でpythonが起動するようですが…)

4
6
3

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
4
6