【Python】pipenvを使ったパッケージ管理
はじめに
- Pythonのパッケージ管理ツール
- venv + pip を統合し、複数人開発でも便利
- npmに似た感覚で使用可能
------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ --------------
pipenv のインストール
code:terminal
$pip install pipenv
------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ --------------
pipenv の使い方
- 環境: Ubuntu Xenial / Python 3.6 / pipenv 2018.11.14
- 使い方は主に3通り:
1. 新規プロジェクト初期化
2. パッケージのインストール
3. Pipfile / Pipfile.lock から環境再現
------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ --------------
プロジェクト初期化
code:terminal
$pipenv --python 3
- pyenv未使用時は指定Pythonが自動インストールされない
------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ --------------
パッケージのインストール
code:terminal
$pipenv install django
- Pipfile / Pipfile.lock に反映
- プロジェクト直下で実行推奨
開発用パッケージ
code:terminal
$pipenv install --dev autopep8 flake8
code:Pipfile
dev-packages
autopep8 = "*"
flake8 = "*"
requirements.txt からインストール
code:terminal
$pipenv install -r ./requirements.txt
------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ --------------
Pipfile / Pipfile.lock から環境再現
Pipfileのみ
code:terminal
$pipenv install
$pipenv install --dev
Pipfile.lockのみ
code:terminal
$pipenv sync
$pipenv sync --dev
------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ --------------
スクリプト登録と実行
code:Pipfile
scripts
start = "python manage.py runserver 192.168.33.10:8080"
test = "python -m unittest discover -v"
format = "autopep8 -ivr ."
lint = "flake8 --show-source ."
code:terminal
$pipenv run start
$pipenv run python spam.py
------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ --------------
仮想環境操作
仮想環境に入る
code:terminal
$pipenv shell #抜けるときは exit
仮想環境のパス確認
code:terminal
$pipenv --venv
仮想環境の場所指定
code:terminal
$export WORKON_HOME=~/venvs
$pipenv --python 3
プロジェクト直下に作成
code:terminal
$export PIPENV_VENV_IN_PROJECT=true
$pipenv --python 3
仮想環境削除
code:terminal
$pipenv --rm
------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ --------------
パッケージ管理操作
バージョン指定インストール
code:terminal
$pipenv install numpy==1.14
GitHubリポジトリ指定
code:terminal
$pipenv install git+https://github.com/<user>/<repo>.git@<rev>#egg=<pkg>
パッケージ更新
code:terminal
$pipenv update
インストール済パッケージ確認
code:terminal
$pipenv graph
------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ ------------------ --------------
環境変数自動読み込み
- プロジェクト直下の .env を自動読み込み
code:.env
DEBUG=1
code:terminal
$pipenv run python
>> import os
>> os.environ'DEBUG'
'1'