質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

10689閲覧

[開発環境]pythonのpipenvとdockerの違い

mkscia

総合スコア18

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2020/01/16 01:42

pythonで練習用に仮想環境を作り、アプリを制作したいと思っています。
dockerを使ってpythonの環境を作ろうと思ったのですが、調べてみるとpythonにはpipenvという仮想環境を作るツールがあると知りました。
pipenvを使えばdockerやvagrantは必要ないですか?
dockerとpipenvを一緒に使って構築しているサイトがあったりしてどれが最適なのかわかりません。

ご教授いただけましたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

DockerはOSレベルから仮想環境を作るシステムです。単一のマシン(コンピュータ)の上で複数のOS環境を同時に稼働させたりすることができます。

vagrantはちょっとややこしいですが、Dockerも含めたOSレベルの仮想化ツールのwrapperないしフロントエンドと捉えておくと良いと思います。様々なものをバックエンドに置いて動かすことができます。

OSレベルの仮想化のためのツールにはDockerの他にも色々なものがあり、VMwareのツールやVirtualBoxが比較的有名です。というか、歴史的にはそれらの技術(VM:Virtual Machineと呼ばれます)が先行し、その後OSのカーネルを共有するためにVMに比べて技術的なメリットのあるDockerが誕生して普及しました。


pipenvなどのPythonの仮想化ツール(他にもvenv, virtualenv, pyenv, anacondaの提供する仮想環境機能など、様々なものがあります)で言われる「仮想化」はOSレベルの仮想化とは一切関係がありません。これらは(あえていえば)アプリケーションレベルの仮想化を実現するものです。

これらのツールを用いると、おおむね

  • それぞれ異なったライブラリをインストールした複数のPython環境を簡単に作れる
  • それぞれ異なったバージョンのPython環境を共存させることができる
  • これらを切り替えて使うことができる(pythonやpipなどのコマンドで立ち上がる実行ファイルが切り替わるようにするなど)

といったことができます(ツールによって多少の機能の相違はあります。たとえばvenv自体にはpythonのバージョンを切り替える機能はありません)。

逆に言うと、そういったことをしたいのでなければ、必ずしもpythonの仮想環境は必須ではありません。


それはそれとして、pipenvには気がかりな点があります。というか率直に言えば、開発が滞っています。

最後に更新がリリースされたのは2018年の11月で、一年以上新しいバージョンをリリースできていないのが現状です。これは昨年、インターネット上で少し話題にもなりました。

開発継続が断念された訳ではないようですが、特別に使いたいのでもない限り、積極的にpipenvを選ぶ状況でもないのかな、という感じです。

Is pipenv dead? Why has the project stopped? : Python
If this project is dead, just tell us · Issue #4058 · pypa/pipenv
pipenv · PyPI

投稿2020/01/16 04:15

編集2020/01/16 04:23
hayataka2049

総合スコア30939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mkscia

2020/01/16 04:26

なるほど。 pipenvはOSの仮想環境を作るものではないのですね。 OSからの仮想環境を作る場合はvagrantもしくはdockerで環境を作り、pipenvやvenvでpythonのバージョンごとに管理するといったところでしょうか。 pipenvよりvenv, virtualenvのほうがメジャーみたいですね。 venvを試したところ、簡単にpython環境を作れましたので、そっちで開発していこうと思います。 docker,vagrantとpipenvの違い、大変わかりやすい説明でした。 ご回答ありがとうございました。
guest

0

https://ja.wikipedia.org/wiki/Docker
https://pipenv-ja.readthedocs.io/ja/translate-ja/

DockerはOSを含めた環境を構築し、pipenvはpython関連のパッケージを名前をつけて管理できるものです。
開発するものに合わせ、選定すればよろしいかと。
最適か否かは試してみれば良いとも思います。それらのツールを削除するのは簡単ですし。

投稿2020/01/16 04:14

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mkscia

2020/01/16 04:28

venvを使ってpythonの仮想環境を試してみました。 構築するのも消すのもとても簡単にできました。 どれが使いやすいのか色々試して行きたいと思います。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問