venvを使うことになった背景
学校でpythonを使うことが多くライブラリーを入れることが多い。ふと思ったのだ、あれ環境が汚れて行ってるくねと、
venvの使い方
WindowsとMac/linuxとでは挙動が異なる。それを深く解説していく。
MacOS/Linux
python3 -m venv 任意のフォルダー名
Windows
python -m venv 任意のフォルダー名
構文はこうだが、たいてい下のように暗黙のルール??的なのが存在している。.venvにしてることが多い(わかりやすいため)
MacOS/Linux
python3 -m venv .venv
Windows
python -m venv .venv
そしてここからが大事だ。venvの環境に入るときMac/linuxとWindowsで打ち込むコードが違う。
MacOS/Linux
source ./作ったフォルダ名/bin/activate
Windows
.\作ったフォルダ名\Scripts\activate
暗黙のルールに従った書き方だと
MacOS/Linux
source ./.venv/bin/activate
Windows
.\.venv\Scripts\activate
Windowsの方へ
おそらくこれを実行してもこんな感じに怒られるはずです。これはスクリプトの実行が無効になっているので使えるようにしときましょう。
.\.venv\Scripts\activate : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\XXX\.venv\Script
s\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink
/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\.venv\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
1度だけ(管理者不要)←おすすめ!!!
Set-ExecutionPolicy RemoteSigned -Scope Process
常時有効※セキュリティ的におすすめしません(管理者必要)
Set-ExecutionPolicy RemoteSigned
すると、こんな感じになり、venvが使えるようになります!!!
(.venv) user@XXXX:~$
Windows
(.venv) PS C:\Users\XXXX>
このまま実行したりpipを使うと自動的にvenv内で動きます
venvを抜けたいとき
MacOS/LinuxとWindows共通のコマンドで抜けられます
Windows+MacOS/Linux
deactivate
最後に
今回、学校で開発をするときに、環境が汚れるの嫌だったのでvenvを紹介しました。
では、よき開発ライフを!