1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Jupyter環境とVenv環境を作る

1
Last updated at Posted at 2020-12-17

はじめに

本記事は筆者のPythonの環境構築を紹介したものになります。
筆者はjupyternotebookを用いたデータサイエンス用環境Djangoを使うようの環境の2つを作っています。

**jupyter環境内でも仮想環境をさらに分けて作れるし必要ないのでは?**と思われるかもしれませんが、jupyter(conda)環境には対応していなくて、venv(pip)環境に対応しているモジュール/APIなどが存在します。なので、両方あったほうがなにかと便利になると思います。

なぜ環境を分けるのか

プログラムを作る際はプログラムごとに環境を作り直すことが必須といえます。なぜなら、プログラムごとに必要な追加モジュールやバージョンが異なるからです。

jupyter(conda)環境であればmaplotlibをインストールしますが、Webサイト構築用の環境にはこのモジュールはいりません。また、一方のプログラム内ではこのモジュールのver1.1を使わないと作動しないが、ほかのプログラムでは最新のverにアップデートしたいといった状況にも対応できます。以上のことから環境を分ける作業は必須です。

仮想環境

環境を分ける方法はいくつか用意されています。通常1つのパソコンには1つのPython.exeしか導入できないので1つしか環境は作れません。しかし、実際には仮想環境といわれるものを構築し、一つのOSに複数のPython環境を作ることが可能になっています。主観ですが仮想環境とはフォルダごとにプログラムファイルを保存することとイメージするとわかりやすいです。

筆者のPython仮想環境への考え

筆者はvenv環境が好きです。理由はjupiter環境は問題が起きた時対応が難しいと感じたからです。
venv環境はとても単純でどこにどのファイルがあるかすぐ把握できるのが魅力です。jupyterはあらかじめanacondanavigatorなどの便利ソフトが入ってるので、クリックで環境構築やインストールができてしまうのが魅力ですが、初心者は逆に何を行っているのか分かりづらいと思います。筆者も初心者なのでvenvのほうがわかりやすくて好きということです。

やってはいけないこと

jupyter環境はconda、venv環境はpipというツールを用いて動作します。問題はこのcondaとpipが競合してしまうことです。同じ環境内で両方のツールをインストールしてしまえばバグが起きてしまいかなり面倒です。

なので一般にこの両環境を合わせることはよくありません。混ぜるな危険

本題:仮想環境の構築

Pythonの場合大雑把に言うとjupyter環境、venv環境、virtualenv環境があります。(ほかにもあるとは思いますが)。virtualenv環境とvenv環境は似ているのですが、公式ではvenv環境が推奨されています。jupyter環境はデータサイエンス用の環境となります。venv環境はその他、といった感じです。
結論を言いますと一つのユーザではこの2環境は両立できません。筆者はいろいろトライしましたが、うまくいかず、断念しました。なので筆者はユーザを2つ作ってそこでそれぞれの環境を作りました

※ただし、jupyter環境の一つの醍醐味であるnotebookですがこれに関してはvenv環境でpip install notebookをすれば導入できますので、notebookだけを使いたいのであればjupyter環境はいらないかもしれません。
仮想環境.png
以下それぞれの環境を構築する方法を書きます。

jupyter(conda)環境

まず、ユーザを新しく作ってそのユーザに切り替えましょう。
以降は2度手間ですので、以下のサイトを参照してください。
https://www.python.jp/install/anaconda/windows/install.html

venv(pip)環境

同じく新たなユーザを作ってください。jupyter環境のあるユーザでなければ問題はないのでその場合は現ユーザで作ってもいいと思います。

Pythonの導入→venvモジュールのインストール→venvコマンドで仮想環境作成といった流れです。

Pythonの導入は
https://www.python.jp/install/windows/install.html
を参照してください。やっていることはアプリのダウンロードとPathへの追加です。

venvのインストール、仮想環境の作成
どうやらPythonの標準ライブラリにvenvモジュールはあらかじめ入ってるようなので別途インストールする必要はなさそうです。
https://qiita.com/fiftystorm36/items/b2fd47cf32c7694adc2e

これら環境は何が違うの?

jupyter環境はcondaモジュールを使ってパッケージの管理をします。

モジュールとは簡単に言うとpythonスクリプトです。pythonであらかじめあるdatetimeやos.pathなど使った経験があるかと思います。こういった機能が書かれたPYthonスクリプトがあらかじめPython.exeと一緒に同梱されています。これを標準ライブラリといいます。
https://docs.python.org/ja/3/library/index.html
これが標準ライブラリでvenvもありますね。

話を戻すとjupyterにはcondaモジュールがあり、これの機能はファイルのインストール、削除、アップデートなどなどです。コマンド上ではconda install ~~とうてば動作します。
一方venv環境はcondaではなくpipモジュール
があります。機能はcondaと同じで、**pip install ~~**とうてば動作します。

違いはこのパッケージ管理を行うモジュールです。実はこのモジュールごとに入れられるパッケージ(matplotlibやdjango、Celeniumなど)が違います。有名なライブラリはconda用、pip用で用意されていますが、根本的な構造は違うので動作速度や容量、やれることなどに差が出ます

conda環境はデータサイエンス系のモジュールが豊富で充実していますが、pip環境はそれ以外の用途ではcondaに勝るモジュールを導入できることがあります

以下URLでは筆者が実際に直面した問題になります。
https://teratail.com/questions/276416

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?