Pipenvと仮想環境

https://farm3.staticflickr.com/2943/33485660921_dfc0494739_k_d.jpg

このチュートリアルでは、Pythonのパッケージをインストールして使う体験をしてもらいます。

このチュートリアルは必要とするツールをインストールして使う方法を解説し、ベストプラクティスを強く推奨するものです。 Pythonは非常に多岐に渡る目的に使われていて、依存関係をどのように管理したいかは厳密には、どのようにソフトウェアの公開を決めるかによって変わるかもしれないことを心に留めておいてください。 このガイダンスを直接適用するのに一番向いているのは、(Webアプリケーションを含む) ネットワークサービスの開発とデプロイですが、どんな種類のプロジェクトの開発環境やテスト環境の管理にも非常によく適したものになっています。

注釈

このガイドはPython 3向けに書かれていますが、とある理由でまだPython 2.7を使っている場合でも、それぞれの指示はきちんと動くでしょう。

☤ Make sure you’ve got Python & pip

Before you go any further, make sure you have Python and that it’s available from your command line. You can check this by simply running:

$ python --version

3.6.2 のような表示が出力されたと思います。 もしPythonをインストールしていなかったら、 python.org から最新のバージョン3.xをインストールするか、 The Hitchhiker’s Guide to PythonInstalling Python 節を参照してください。

注釈

もしあなたが初心者で次のようなエラーが出てしまったら:

>>> python
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'python' is not defined

このエラーが起きたのは、 python コマンドは シェル (ターミナルコンソール とも呼ばれます) で動かすものだからです。 Python for Beginnersというサイトの getting started tutorial を参照し、OSのシェルの使い方やPythonとやり取りする入門をしてください。

Additionally, you’ll need to make sure you have pip available. You can check this by running:

$ pip --version
pip 9.0.1

ソースコードや python.org のインストーラーや Homebrew からPythonをインストールした場合は、既にpipがインストールされているはずです。 Linuxを使っていて、OSのパッケージマネージャーを使ってインストールした場合には、それとは別に pipのインストール をしなければならないかもしれません。

If you plan to install Pipenv using Homebrew you can skip this step. The Homebrew installer takes care of pip for you.

☤ Pipenvのインストール

Pipenv is a dependency manager for Python projects. If you’re familiar with Node.js』 npm or Ruby’s bundler, it is similar in spirit to those tools. While pip can install Python packages, Pipenv is recommended as it’s a higher-level tool that simplifies dependency management for common use cases.

☤ HomebrewでのPipenvのインストール方法

HomebrewはmacOSの人気のあるオープンソースパッケージマネージシステムです。

Homebrewでpipenvをインストールするとpipenvとその依存パッケージを隔離された仮想環境に閉じ込めるので、他のインストールされているPythonに影響は与えません。

Once you have installed Homebrew simply run:

$ brew install pipenv

いつでもPipenvをアップグレードするには次のコマンドを実行します:

$ brew upgrade pipenv

☤ pipenvの実用的なインストール方法

もしインストールされた今も使っているpipがあって、ある 「ツール群」 タイプのPythonモジュールをどの環境でも使うユーティリティとしてメンテナンスしている場合は、pip の ユーザーインストール を使うとホームディレクトリにインストールできます。 依存関係どうしの影響の関係で、この方法でインストールするツールは、virtualenv、Pipenv、toxのようなPythonを使う作業の工程のための基本要素となるソフトウェアだけに制限すべきという点に注意してください。

次のコマンドでインストールします:

$ pip install --user pipenv

注釈

このコマンドは user installation を行い、システム全体に関わるパッケージを壊さないようにします。 インストールを行った後に pipenv が使えるようにならない場合は、 user base のバイナリディレクトリを PATH に追加する必要があります。

LinuxとmacOSでは python -m site --user-base を実行してユーザーのベースバイナリディレクトリを見付け、その末尾に bin を追加します。 例えば、このコマンドはたいてい ~/.local (~ はあなたのホームディレクトリの絶対パスへ展開されたもの) なので、 ~/.local/binPATH に追加する必要があります。 ~/.profile を修正 すると PATH に行った設定が再起動しても消えません。

Windows では py -m site --user-site を実行してユーザーのベースバイナリディレクトリを見付け、 site-packagesScripts で置き換えます。 例えば、このコマンドは C:\Users\Username\AppData\Roaming\Python36\site-packages のようなパスを返すので、 C:\Users\Username\AppData\Roaming\Python36\ScriptsPATH に含める必要があります。 コントロールパネル でユーザー環境変数の PATH に設定すると再起動しても消えません。 PATH の変更を有効にするには一度ログアウトする必要があるかもしれません。

For more information, see the user installs documentation.

いつでもPipenvをアップグレードするには次のコマンドを実行します:

$ pip install --user --upgrade pipenv

☤ 大雑把なPipenvのインストール方法

もしpipをまだインストールしていなくても、この大雑把なインストール方法を使って、Pipenvのシステム全体を立ち上げられます:

$ curl https://raw.githubusercontent.com/kennethreitz/pipenv/master/get-pipenv.py | python

☤ プロジェクトで使うパッケージのインストール

Pipenv manages dependencies on a per-project basis. To install packages, change into your project’s directory (or just an empty directory for this tutorial) and run:

$ cd myproject
$ pipenv install requests

Pipenv will install the excellent Requests library and create a Pipfile for you in your project’s directory. The Pipfile is used to track which dependencies your project needs in case you need to re-install them, such as when you share your project with others. You should get output similar to this (although the exact paths shown will vary):

Creating a Pipfile for this project...
Creating a virtualenv for this project...
Using base prefix '/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6'
New python executable in ~/.local/share/virtualenvs/tmp-agwWamBd/bin/python3.6
Also creating executable in ~/.local/share/virtualenvs/tmp-agwWamBd/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: ~/.local/share/virtualenvs/tmp-agwWamBd
Installing requests...
Collecting requests
  Using cached requests-2.18.4-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests)
  Using cached idna-2.6-py2.py3-none-any.whl
Collecting urllib3<1.23,>=1.21.1 (from requests)
  Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests)
  Using cached certifi-2017.7.27.1-py2.py3-none-any.whl
Installing collected packages: idna, urllib3, chardet, certifi, requests
Successfully installed certifi-2017.7.27.1 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22

Adding requests to Pipfile's [packages]...
P.S. You have excellent taste! ✨ 🍰 ✨

☤ インストールされたパッケージを使う

これでRequestsがインストールされたので、単純な main.py ファイルを作成し、Requestsを使えます:

import requests

response = requests.get('https://httpbin.org/ip')

print('Your IP is {0}'.format(response.json()['origin']))

Then you can run this script using pipenv run:

$ pipenv run python main.py

これに似た出力が表示されるはずです:

Your IP is 8.8.8.8

$ pipenv run を使うと、インストールしたパッケージがスクリプトから使えることが保証されます。 インストールしたパッケージに全てのコマンドがアクセスできることが保証された新しいシェルの起動もできます。

☤ 次のステップ

おめでとうございます、Pythonのパッケージをインストールして使う方法が学べました! ✨ 🍰 ✨