はじめに
今後Pythonを学んでいく必要があり、いろいろと勉強中です。
この記事に対してもビシバシ指摘をいただけるとありがたいです。
本題
今どきのPythonの開発環境の構築について調べていると、どうも「Pipenv」を使う手法がナウいらしい。
Pipenvはnpmのようにモジュール管理できるらしく、そうであればとっつきやすそうということで使ってみることにしました。
Pipenvのインストールは公式のドキュメントなどに書かれています。
ライブラリのインストール
適当なプロジェクトを作成します。
$ mkdir sample_project && cd sample_project
適当なライブラリをPipenv経由でインストールします。
$ pipenv install flask
これで、プロジェクト内にPipfile
とPipfile.lock
が作られて、パッケージの依存関係などが管理されるらしい。
とてもnpmっぽい!
そして、インストールしたライブラリを使うようなコードを書きます。
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
で仮想環境に対して操作ができるようになります。
特にエラーはおきません。
最後のexit
でpipenv 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のコードを書いていけるのかなーと思いました。
もっと色々と調べてみます。