LoginSignup
4
8

More than 3 years have passed since last update.

私のanaconda重すぎ…?だったのでPipenv使う【Windows10 Python環境構築】

Last updated at Posted at 2021-01-28

Anacondaの仮想環境起動めんどくさい

初心者向け記事です。
今までWindowsではインストールするだけで簡単だったのでAnaconda使ってたのですが、重すぎでした。
Windows PCが先日お亡くなり😇になったタイミングでPipenvで環境構築するようにしました。

👉よく使うコマンド一覧だけ知りたい場合

Pipenvにするといいこと

雑に特徴を説明。

  • Anacondaより軽い。すぐ起動する
  • ダウンロード用のpipと環境という意味のenvくっついてPipenv。つまりライブラリの管理と仮想環境構築できるってこと
  • ファイル渡せば他の人、PCでもすぐ環境作れる
  • スクリプト便利に使える

Pythonをダウンロード

安定版のstableをDLしておくといいと思います。

https://www.python.org/downloads/windows/

image.png

記事書いたときにはver 3.9出てますが、3.8入れます。
新しいの入れると動かないライブラリとかあるので、新しければいいというわけではない。

image.png

Add Python バージョン Path ってところにチェック入れておくと便利

image.png

一応これ押しておく。

windowsボタンの横の検索窓のところに
cmdって入れるとあの黒い画面出るのでpythonと入力してPython 3.8.7みたいなのがでればOK。exit()で抜けて、pipと入力したら

Usage:
  pip <command> [options]

みたいなのがダーと出てきたらOK

一応Update

pipを最新にしときます。管理者として実行しないとエラーになるはずなので
先ほどと同じようにcmdと打って出てきた表示を
右クリック→管理者として実行をしてください

C:\WINDOWS\system32> pip install --upgrade pip

あとはいらないので閉じてください。

そして、また普通のコマンドプロンプト開く。
※ 最初に開いたコマンドプロンプト開きっぱなしの人は閉じてもう一度起動させる。

pipenv インストール

Pipenvをインストールします

pip install pipenv

インストール終わったら、

pip env

と入力して

Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:

みたいなのがいっぱいでたらOK

1. 簡単に使い方説明

Django(WEBアプリのフレームワーク)で初期画面表示させるまでテストとしてやってみます。

プロジェクト保存するフォルダ(今回はdjango)作ってそのフォルダ内でshift押しながら右クリックしてpowershellで起動すると楽に開けます。

pipenv --python 3

こうすればすでに入っている私の場合はpython 3.8で仮想環境が作れます。
pipfileがつくられて、構成が記述されてます。

pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.8"

3.8が入ってますね。

もし、複数のバージョンをすでに入れた場合は

pipenv --python 3.9

みたいに指定することが可能です。

2. インストールする

pipenvで何かを入れるときはpipenv install 〇〇です
django入れてみます。

pipenv install django

バージョンを指定したい場合

詳細に指定したい場合はこんな感じで。

pipenv install django==2.2.16

リポジトリから取得する場合

pipenv install git+https://github.com/<ユーザ>/<リポジトリ>.git@<リビジョン>#egg=<パッケージ名>

3. 仮想環境に入る

仮想環境に入ります。普段はここからやればOK

pipenv shell

あとは普通に開発できます。仮想環境から抜けるときは、

exit

とりあえず環境構築するだけならここで完了です。

実践: Djangoを試してみる

WEBアプリのフレームワーク使ってテストしてみます。
pipenv shellした後に

django-admin startproject testapp .
python manage.py runserver

http://127.0.0.1:8000/

image.png

はい、OK

4. Pipfile,Pipfile.lockで、他の人、PCの環境を一瞬で構築

すでに誰かが環境構築していて、gitとかから取得した場合などに使う。

Pipfileから環境構築する場合

これ使うとPipfile.lockが更新されます。

pipenv install

Pipfile.lockから構築

詳細なバージョンなども合わせて環境構築する場合はpipfile.lock使うこともできます。

pipenv sync

5. Scriptで開発を便利に

スクリプト使うことができます。
たとえば、djangoのサーバー起動するのにpython manage.py runserverとか面倒だし、コマンド覚える必要もあります。

なので

Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
django = "*"

[dev-packages]

[scripts]
start = "python manage.py runserver"
test = "python manage.py test"

[requires]
python_version = "3.8"

スクリプトを起動

$ pipenv run start

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
January 28, 2021 - 17:57:09
Django version 3.1.5, using settings 'testapp.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

ちゃんとサーバー起動しました。こんな感じで簡単に使えます。

もちろんtestも

$ pipenv run test
System check identified no issues (0 silenced).

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

6. バージョン指定

Pipfile
[packages]
django = "==3.1.7"

[dev-packages]
django = "==3.1.*"
djangorestframework = "==3.*"

django 3.1.7を入れるならdjango = "==3.1.7"
3.1系で最新を入れたいならdjango = "==3.1.*"のように書く。
指定しないならdjango = "*"

Pipfile.lockに書いてあるバージョンを入れたい場合は

pipenv sync

を実行。

補足1

開発環境だけでつかうようなものを入れるとき

pipenv install --dev flake8

コードきれい規約の通りキレイにかけてるか見てくれるflake8ですが、本番環境ではいらないのでこんな感じで開発環境のみで使うように入れることも可能。

Pipfile
[dev-packages]
flake8 = "*"

こんな記述が追加されてます。スクリプトに追記してテストしてみます。

[scripts]
start = "python manage.py runserver"
test = "python manage.py test"
lint = "flake8 --show-source ."
$ pipenv run lint
.\testapp\settings.py:89:80: E501 line too long (91 > 79 characters)
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
                                                                               ^
.\testapp\settings.py:92:80: E501 line too long (81 > 79 characters)
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
                                                                               ^
.\testapp\settings.py:95:80: E501 line too long (82 > 79 characters)
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
                                                                               ^
.\testapp\settings.py:98:80: E501 line too long (83 > 79 characters)
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',

Django、一行長すぎってひっかかってるぞ。

まあ、こんな感じで使えます。

開発環境のライブラリも入れる場合

pipenv install --dev

とすれば、今回の場合

[dev-packages]
flake8 = "*"

も入ることになります。
同じようにPipfile.lockからの場合

pipenv sync --dev

補足2 Pathについて

詰まるとしたらPathの登録だと思います。PythonとかpipとかうってもうまくいかないのはPathが通っていないからです。
windowsのホームボタンの隣にある検索の「ここに入力して検索」とか書いてあるところにシステム環境変数の編集って入力して環境変数ってボタン押す。

Pathってところ選んで、編集押す。

C:\Users\ここにユーザー名\AppData\Local\Programs\Python\Python38\Scripts\
C:\\Users\ここにユーザー名\AppData\Local\Programs\Python\Python38\

みたいなのがなかったら新規で追加してください。Python38というのはver 3.8系を今回入れたのでPython38 になってます。
3.9系入れたらPython39です。

複数のバージョン入っていた場合上に書いてあるものが実行されます。

補足3 コマンド一覧

今回使ったコマンドと、もしかしたら使うかもしれないコマンド

pipenv install

ディレクトリ内にPipfile Pipfile.lockを作成。
既にある場合はPipfileの記述された環境で仮想環境作成

pipenv install

仮想環境にライブラリをインストール。Pipfileに記述が追加される。
このコマンドで一つ一つ入れるのが面倒ならPipfileに記述してpipenv installしよう。
version指定と、開発環境のみに入れる指定も可能。

pipenv install [package]
pipenv install django
pipenv install django==2.2.16
pipenv install --dev flake8

pipenv uninstall

仮想環境のライブラリ削除するコマンドで、Pipfileからも削除される。
依存ライブラリは削除されないので注意

pipenv uninstall [package]

pipenv uninstall

仮想環境使うためのコマンド。毎回作業開始はこれ。

pipenv shell

pipenv run

仮想環境でコマンドを実行する。

詳しくはここ

pipenv run [コマンド]

その他たまに使うかもしれないコマンド

pipenv update
# pipfileに書いたライブラリをアップデート
pipenv update --dev
# 開発環境で使うライブラリならこっち

例えば、

pipfile
[packages]
django = "==3.1.*"

[dev-packages]
django = "==3.1.*"
djangorestframework = "==3.*"

pipenv updateでdjangoが3.1系で最新あったらアップデート。

pipenv update --devでdjangoが3.1系とdjangorestframework 3系で一番新しいものにアップデートできる

pipenv --rm
# 仮想環境を削除

pipenv --venv
# 仮想環境のパスを確認できる
4
8
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
4
8