チラシ裏日記上等!!新館

Webアプリケーションエンジニアの雑記帳。映画とかアニメとかの記事も書きます。

pipenvを使ってpythonの環境を整える

Pythonを学んでいて、Pythonのバージョン管理はvenv、パッケージ管理はpipでやるものだという認識でいました。しかし最近pipenvなるものがあるということを知りました。

github.com

Pipenv — the officially recommended Python packaging tool from Python.org, free (as in freedom).

Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, yarn, etc.) to the Python world. Windows is a first–class citizen, in our world.

オフィシャルでレコメンドされている上に、bundlerやnpmなどの使用感と似た世界を実現しようとしているようなので、RubyJavaScriptをよく使っている身としてはありがたいソフトウェアです。

pipenvを使ってPythonの環境を整えてみたいと思います。

インストール

macを利用しているのでbrewでインストールします。

$ brew install pipenv

簡単にインストールできます。他にもpipでインストールすることも出来るようです。

https://github.com/pypa/pipenv#installation

Python 3.6の環境を作る

Python 3.6の環境を作ってみます。

$ pipenv --python 3.6
Creating a virtualenv for this project…
Using /usr/local/bin/python3.6m (3.6.5) to create virtualenv…
⠋Running virtualenv with interpreter /usr/local/bin/python3.6m
Using base prefix '/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/ユーザ名/.local/share/virtualenvs/ディレクトリ名-自動生成された文字列/bin/python3.6
Also creating executable in /Users/ユーザ名/.local/share/virtualenvs/ディレクトリ名-自動生成された文字列/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/ユーザ名/.local/share/virtualenvs/ディレクトリ名-自動生成された文字列
Creating a Pipfile for this project…

これを実行するとvirtualenvで環境を作り、パッケージの依存を解決するためのPipfile が自動生成されます。

virtualenvを使って /Users/ユーザ名/.local/share/virtualenvs/ディレクトリ名-自動生成された文字列/bin/python3.6 みたいな感じで環境が作られます。ディレクトリ名を使って環境を構築するので、他の環境とバッティングしないのがいい感じです。

PipfileTOMLの形式で作成されます。

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.6"

作った環境でPythonを実行するには次のように実行します。

$ pipenv run python --version
Python 3.6.5

--versionPythonのバージョン3.6.5がでていることが分かります。pipenvでインストールしたパッケージのコマンドを実行するときもpipenv runを使います。

パッケージをインストールする

pipenvでパッケージインストールするには次のコマンドで実行します

$ pipenv install pygithub

パッケージはvirtualenvで作られたディレクトリ内 /Users/ユーザ名/.local/share/virtualenvs/ディレクトリ名-自動生成された文字列/bin/python3.6/site-packages に配置されます。

pygithub を使用したプログラムを次のように書いて実行します。

import os
from github import Github

g = Github(os.getenv('GITHUB_ACCESS_TOKEN'))

for repo in g.get_usher().get_repos():
  print(repo.name)
$ pipenv run python main.py

実行すると自分のリポジトリ一覧が表示されます。ちゃんとpygithubが使用されていることが分かります。

まとめ

pipenvを使って環境を作り、簡単にプログラムを書いてみました。Rubyのbundlerのような使用感で使うことが出来るので使いやすいという印象です。これからのPythonの環境構築はpipenv一択な気がしますね。