Help us understand the problem. What is going on with this article?

pipenv を使ってみたのでメモ

More than 1 year has passed since last update.

概要

pipenvで色々やってみる

  • 各コマンドを試したのでそのときの備忘録も兼ねてメモ。
  • 実行環境は、 macOS Sierra。

1.インストールする。

pipenvは、pipでインストールできます。
いつも通り以下のコマンドを実行してインストール。

$ pip install pipenv

2. とりあえずpipenvを使ってみる

$ mkdir test1      # 検証用ディレクトリの作成
$ cd test1         # 検証用ディレクトリに移動
$ pipenv install   # 仮想環境 と Pipfile を作成
$ ls -a
.       ..      .venv       Pipfile     Pipfile.lock

pipenv実行後に、 Pipfile, Pipfile.lock と、仮想環境の設定が格納される .venv が作成されていることがわかります。
後述する方法でパッケージをインストールすると、Pipfileにその情報が書き込まれます。

Pythonのバージョンを切り替える場合は、以下のコマンドを実行する

$ pipenv shell

3. 作成した環境に対して、パッケージをインストールする。

pipenv install [package] で、作成した仮想環境にパッケージをインストールできます。
パッケージのバージョンを指定してもいいし、省略しても構いません。省略した場合は、最新のバージョンが取得されるのは pip と同じです。

$ pipenv install nose==1.3.7  # 仮想環境向けにパッケージをインストール
$ pipenv shell
$ (test1)(test1) python
>>> import nose
>>> exit()
$ python
>>> import nose     # 仮想環境にのみインストールされていることを確認してみる
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named nose
>>> exit()
$ (test1)(test1) exit  # 仮想環境から抜ける
$cat Pipfile        # Pipfileを確認してみる
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true

[packages]          # new!!!
nose = "==1.3.7"

4. 定義済みのPipfileを用いて、仮想環境の構築とパッケージのインストールを試す

$ cd .. && mkdir test2 && cd test2  # 検証用にディレクトリ作成&移動
$ ls -a
.   .. 
$ pipenv run python      # 仮想環境に入ってpythonを実行するのと同義
>>> import nose
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named nose
>>> exit()

$ cp ../test1/Pipfile .  # 定義済みPipfileを持ってくる
$ pipenv install         # 仮想環境の作成とパッケージのインストールを実施
$ ls -a
.       ..      .venv       Pipfile     Pipfile.lock
$ pipenv run python
>>> import nose
>>> exit()

 備考:pipenv をバージョン指定で実行する

バージョンを詳細に指定する

Pythonのバージョンを直接指定できるようになりました。何も指定しなければStableな最新版が入るようです。

$ pipenv --python <Pythonのバージョン>

3.6.2で入れたい場合は、以下のように記述できます。3.6といった指定もできます。その場合、 x.y.z の部分は最新が取られるようになります。

$ pipenv --python 3.6.2

2系か3系かを指定する

下記コマンドでそれぞれバージョンを指定して実行できます。とりあえず2系・3系の環境を作りたい場合は、ざっくりこの指定で良いのではないでしょうか。

$ pipenv --two # 2系の環境を作成する
$ pipenv --three # 3系の環境を作成する

The 'python3' command exists in these Python versions が出た場合

リリース当時に遭遇しました。pyenvで、2系・3系の複数バージョンをインストールしていたため、下記のようなメッセージが表示され、処理が中断されたことがありました。3系のバージョンが複数あって、対象を1つに絞れないという情報を提供してくれています。2系でも同様。

$ pipenv --three
Creating a virtualenv for this project...
pyenv: python3: command not found
The `python3' command exists in these Python versions:
  3.4.2
  3.4.3

この場合は、pyenv local [version] などでバージョンを指定することでとりあえず解決できるが、果たしてこれで良いのだろうか・・・。
pyenv install で初期化した場合は、 system のバージョン(pyenvとは無関係)を参照しているようで、その場合は当然ながら上記エラーは発生しません。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした