SlideShare a Scribd company logo
Pipenvのご紹介
2018/10/27
Python東海 & Unagi.py
合同勉強会
やな
お前、誰よ?
● 本業
○ 業務系システム(具体的には、生産管理・原価管理)
SE・プログラマ・時々マネージャもどき
● 過去業
○ EC(いわゆるネット通販)モール・カートシステムの導入保守SE
Ruby on Rails・Yiiなど(しかし、コードはほとんど書いてませんでした)
● Python歴・おつきあい方
○ 1年未満。
本業に生かすことをもくろんではいるが、道半ば。
まだまだ勉強中!
やな
Pipenvとは
Pythonライブラリのパッケージ管理ツール。
開発しているアプリで、いろいろなライブラリを使用している場合にまつわる、もろもろ。
・最新バージョンのライブラリだとうまく動かないので、
旧バージョンを使用するようにしたい……
・複数の開発環境で、使用するライブラリのバージョンを合わせたい……
・新しい開発環境に、このアプリで使用するライブラリを簡単にインストールしたい……
・複数のアプリを並行して開発している時、
それぞれで別々のライブラリを「環境を汚さずに」使いたい……
こうしたことを容易にします。
いずれも、Python標準のpip + venvでも可能ですが、
Pipenvだと、何かと、より便利です。
他の言語でいうと?
● Rubyでいう、Bundler
● Node.jsでいう、npm
のような存在(らしい)。
RubyやNode.jsでは、これらがデファクトスタンダードだが、
Pipenvの機能は、だいぶこれらに追いついている(そうです)。
requirements.txtでのライブラリ管理と
比べて、何がうれしいのか?
ライブラリ間の依存関係が、より見えやすいです。
開発しているアプリの依存ライブラリを、設定ファイルに書き出すことは、
Python標準のpipでも
とすることで、可能です。
が……。たとえば、flaskのように、依存ライブラリが多い
ライブラリを使っている場合、単純に上記のようにすると、
→ こんなふうに、
「直接依存しているライブラリ以外の依存ライブラリも、
設定ファイルに含まれる」
ため、requirements.txtが、ちょっと冗長になります。
Click==7.0
Flask==1.0.2
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
pkg-resources==0.0.0
Werkzeug==0.14.1
$ pip freeze > requirements.txt
requirements.txt
Pipenvでのライブラリ管理の場合、
設定ファイルがすっきりしているし、
ライブラリ同士の依存関係も、より分かりやすいですね。
[[source]]
url = "https://pypi.org/simple"
name = "pypi"
verify_ssl = true
[packages]
flask = "*"
[dev-packages]
[requires]
python_version = "3.5"
(Pipfile)
Flask==1.0.2
- click [required: >=5.1, installed: 7.0]
- itsdangerous [required: >=0.24, installed: 0.24]
- Jinja2 [required: >=2.10, installed: 2.10]
- MarkupSafe [required: >=0.23, installed: 1.0]
- Werkzeug [required: >=0.14, installed: 0.14.1]
$ pipenv graph
venvでの仮想環境構築と比べて、
何がうれしいのか?
仮想環境ディレクトリが、よりすっきりします。
$ ls
bin flask-sample include lib lib64 pip-selfcheck.json pyvenv.cfg share
$ cd flask-sample
$ ls
requirements.txt
$ ls
Pipfile Pipfile.lock
やってみます
Pipenv仮想環境の使用。
$ cd flask-pipenv/
$ ls
Pipfile Pipfile.lock
$ pipenv install
Installing dependencies from Pipfile.lock (e239e5)...
▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 6/6 — 00:00:13
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
$ pipenv shell
Launching subshell in virtual environment…
.
(flask-pipenv-kbxxxxxx) $
(仮想環境ディレクトリへ移動)
(仮想環境を構築)
(仮想環境を起動)
2018年10月現在での注意点(1)
pip最新の18.1に対応していないそうで、仮想環境構築後、
pipをいったんダウングレードする必要があります。
$ pip install pip==18.0
2018年10月現在での注意点(2)
$ pipenv install (ライブラリ名)
で、何分も待たされることがあるかと思います。
公式でも認識されている問題のようですが、Pipfile.lockの作成に時間がかかるようです。
$ pipenv install (ライブラリ名) --skip-lock
で、Pipfile.lockの作成・更新をスキップすることできます。
時間のある時に、
$ pipenv lock
として、後追いでPipfile.lockの作成・更新を行うようにしましょう。
勝手に謝辞
● 参考にさせていただいたサイト
○ 初心者向け・Pythonの仮想環境venvとPipenvによるパッケージ管理についての解説
■ https://paiza.hatenablog.com/entry/2018/07/05/初心者向け・Pythonの仮想環境
venvとPipenvによるパッケージ
○ きたない requirements.txt から Pipenv への移行
■ https://www.kabuku.co.jp/developers/python-pipenv-graph
● Pipenvコミッタ・コントリビュータの皆々様
● そしてもちろんヴァンロッサム先生に!
そして、
● この場を催してくださったPython東海・Unagi.pyの皆さま
● ご静聴いただいたこの場の皆々様に
どうもありがとうございました!

More Related Content

What's hot

IPython notebookを使おう
IPython notebookを使おうIPython notebookを使おう
IPython notebookを使おう
Kazufumi Ohkawa
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
shoma h
 
Sinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPythonSinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPython
kuroneko1988
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Yusuke Kon
 
Go言語オーバービュー201507
Go言語オーバービュー201507Go言語オーバービュー201507
Go言語オーバービュー201507
エンジニア勉強会 エスキュービズム
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
 
210630 python
210630 python210630 python
210630 python
Takuya Nishimoto
 
Tfug kansai vol1
Tfug kansai vol1Tfug kansai vol1
Tfug kansai vol1
Natsutani Minoru
 
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
Kei IWASAKI
 
Tfug kansai vol2
Tfug kansai vol2Tfug kansai vol2
Tfug kansai vol2
Natsutani Minoru
 
他人が書いたコードのリファレンスをSphinxで作る方法
他人が書いたコードのリファレンスをSphinxで作る方法他人が書いたコードのリファレンスをSphinxで作る方法
他人が書いたコードのリファレンスをSphinxで作る方法
Takeshi Sugiyama
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LT
drillan
 
プログラミング入門 Ruby超入門編
プログラミング入門 Ruby超入門編プログラミング入門 Ruby超入門編
プログラミング入門 Ruby超入門編
ナレッジコミュニケーション
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
Yutaka Kato
 
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
 
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
Rina Fukuda
 
Phpstormちょっといい話
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話Hisateru Tanaka
 
Python エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpPython エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpTakeshi Komiya
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Katsuhiro Morishita
 

What's hot (20)

IPython notebookを使おう
IPython notebookを使おうIPython notebookを使おう
IPython notebookを使おう
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
 
Sinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPythonSinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPython
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
 
Go言語オーバービュー201507
Go言語オーバービュー201507Go言語オーバービュー201507
Go言語オーバービュー201507
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
 
210630 python
210630 python210630 python
210630 python
 
Tfug kansai vol1
Tfug kansai vol1Tfug kansai vol1
Tfug kansai vol1
 
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
 
Tfug kansai vol2
Tfug kansai vol2Tfug kansai vol2
Tfug kansai vol2
 
他人が書いたコードのリファレンスをSphinxで作る方法
他人が書いたコードのリファレンスをSphinxで作る方法他人が書いたコードのリファレンスをSphinxで作る方法
他人が書いたコードのリファレンスをSphinxで作る方法
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LT
 
プログラミング入門 Ruby超入門編
プログラミング入門 Ruby超入門編プログラミング入門 Ruby超入門編
プログラミング入門 Ruby超入門編
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
 
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性PHPerに覚えて欲しい日本語の重要性
PHPerに覚えて欲しい日本語の重要性
 
Phpstormちょっといい話
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話
 
Python エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpPython エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjp
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
 

Similar to Pipenvのご紹介 v2

Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
gree_tech
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Takayuki Shimizukawa
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
 
Pythonによる画像処理について
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理について
Yasutomo Kawanishi
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイント
Masaki NIWA
 
Why python
Why pythonWhy python
Why python
TeppeiAkada1
 
Why python
Why pythonWhy python
Why python
TeppeiAkada1
 
Introduction Pycon2010
Introduction Pycon2010Introduction Pycon2010
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
 
万年ビギナーによるPythonプログラミングのリハビリ計画
万年ビギナーによるPythonプログラミングのリハビリ計画万年ビギナーによるPythonプログラミングのリハビリ計画
万年ビギナーによるPythonプログラミングのリハビリ計画
Takeshi Akutsu
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
Tetsuya Morimoto
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
Taiji Tsuchiya
 
ゲーム開発者向けPythonセミナー(2018年06月20日)
ゲーム開発者向けPythonセミナー(2018年06月20日)ゲーム開発者向けPythonセミナー(2018年06月20日)
ゲーム開発者向けPythonセミナー(2018年06月20日)
Ryo Takahashi
 
R超入門
R超入門R超入門
R超入門
Sachiko Hirata
 
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
Takayuki Shimizukawa
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Hisao Soyama
 
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
Yuto Matsukubo
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
 
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!ペアプロはリモートでもできる!
ペアプロはリモートでもできる!
Tatsuya Deguchi
 
DX Suite & UiPath さっくり読み取りさっくり連携
DX Suite & UiPath さっくり読み取りさっくり連携DX Suite & UiPath さっくり読み取りさっくり連携
DX Suite & UiPath さっくり読み取りさっくり連携
Chuki ちゅき
 

Similar to Pipenvのご紹介 v2 (20)

Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
Pythonによる画像処理について
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理について
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイント
 
Why python
Why pythonWhy python
Why python
 
Why python
Why pythonWhy python
Why python
 
Introduction Pycon2010
Introduction Pycon2010Introduction Pycon2010
Introduction Pycon2010
 
万年ビギナーによるPythonプログラミングのリハビリ計画
万年ビギナーによるPythonプログラミングのリハビリ計画万年ビギナーによるPythonプログラミングのリハビリ計画
万年ビギナーによるPythonプログラミングのリハビリ計画
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
 
ゲーム開発者向けPythonセミナー(2018年06月20日)
ゲーム開発者向けPythonセミナー(2018年06月20日)ゲーム開発者向けPythonセミナー(2018年06月20日)
ゲーム開発者向けPythonセミナー(2018年06月20日)
 
R超入門
R超入門R超入門
R超入門
 
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
 
ペアプロはリモートでもできる!
ペアプロはリモートでもできる!ペアプロはリモートでもできる!
ペアプロはリモートでもできる!
 
DX Suite & UiPath さっくり読み取りさっくり連携
DX Suite & UiPath さっくり読み取りさっくり連携DX Suite & UiPath さっくり読み取りさっくり連携
DX Suite & UiPath さっくり読み取りさっくり連携
 

Pipenvのご紹介 v2

Editor's Notes

  1. 伝聞調なのは、私があまり詳しくないためです……。
  2. 本当はpipでも、constraintsオプションというものを正しく使うことで、もっとすっきりしたライブラリ管理もできるそうなんですが、私がまだ充分に理解できていないので、ここでは触れません。
  3. まあ、言うほどのメリットでも無いかも知れないですが。
  4. という自分は、まだまだそんな域には行けていないですが(^_^;)
  5. という自分は、まだまだそんな域には行けていないですが(^_^;)