LoginSignup
21
14

More than 5 years have passed since last update.

pipenv install したライブラリとそれらのimportについて

Posted at

はじめに

今後Pythonを学んでいく必要があり、いろいろと勉強中です。
この記事に対してもビシバシ指摘をいただけるとありがたいです。

本題
今どきのPythonの開発環境の構築について調べていると、どうも「Pipenv」を使う手法がナウいらしい。
Pipenvはnpmのようにモジュール管理できるらしく、そうであればとっつきやすそうということで使ってみることにしました。

Pipenvのインストールは公式のドキュメントなどに書かれています。

ライブラリのインストール

適当なプロジェクトを作成します。

$ mkdir sample_project && cd sample_project

適当なライブラリをPipenv経由でインストールします。

$ pipenv install flask

これで、プロジェクト内にPipfilePipfile.lockが作られて、パッケージの依存関係などが管理されるらしい。
とてもnpmっぽい!

そして、インストールしたライブラリを使うようなコードを書きます。

server.py
from flask import Flask, render_template
app = Flask(__name__)


@app.route('/')
def index():
    return render_template('index.html')


if __name__ == '__main__':
    app.debug = True
    app.run(host='0.0.0.0', port=80)

問題

ここでserver.pyを実行しようとしましたが、以下のようなエラーが表示されうまくいきませんでした。

$ python server.py

Traceback (most recent call last):
  File "server.py", line 1, in <module>
    from flask import Flask, render_template
ModuleNotFoundError: No module named 'flask'

どうもflaskが読み込めていないようです...

解決策

pipenv installを実行すると、仮想環境も自動で作成され、
pipenv install <package>するということは、仮想環境に対してライブラリをインストールするということになります。

試しに仮想環境のみにインストールされていることを確認してみます。

$ pipenv shell
$ python
>>> import flask
>>> exit()

$ exit

pipenv shellで仮想環境に対して操作ができるようになります。
特にエラーはおきません。
最後のexitpipenv shellを終了しています。

次に、pipenv shellを実行せずにやってみます。

$ python
>>> import flask
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'flask'

最初と同様なエラーが表示されます。

なので、server.pyを実行したかったら、pipenv shellで仮想環境に対して操作ができるようにしたうえで、実行してあげる必要がありそうです。

こちらを参考にさせていただきました。
pipenv を使ってみたのでメモ - Qiita

pipenv scripts

しかし、このままだと多くの手順が必要なので、Pipenvのscripts機能を使います。
Pipfileに以下を追記します。

[scripts]
start = "python server.py"

そうした上で、下記コマンドを実行すると、仮想環境上でserver.pyを実行できます

$ pipenv run start

なんともnpmライク!

インストールしたライブラリはどこへ?

npm installしたライブラリ群は、同じプロジェクト内のnode_modules/内に入っていきますが、pipenv installしたライブラリたちはどこに行ったのだろうと思い調べました。

先ほど記述したように、pipenv installを実行すると、仮想環境も自動で作成されます。
そこで、pipenv --venvとすると、仮想環境のパスが表示されます。
今回はWindowsを使用しているので、以下のような感じになります。

$ pipenv --venv
C:\Users\username\.virtualenvs\sample_project-KJ82JQpK

インストールしたライブラリ群の在りかはこの中の、
C:\Users\username\.virtualenvs\sample_project-KJ82JQpK\Lib\site-packages
です。

所感

以上、かなり基本的なところでした。。
Python自体はちょっと使ったことがある程度で、使ったとしても標準モジュールを組み合わせて簡単な自動化ツールを作る程度でした。
Pipenvを活用していけば、JavaScriptっぽく(自分が慣れているだけですが)Pythonのコードを書いていけるのかなーと思いました。
もっと色々と調べてみます。

21
14
0

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
21
14