class: center, middle
- 開発時は絶対に何らかの意味での仮想環境を作成する
- Pythonのツールをインストールするときにはpipxなどを使う
- (
pip install --user
もNG) - (代替ツールとしてはryeなども良さそう?)
- (
-
"Python Enhancement Proposal"の略
-
機能拡張のための提案とその議論のまとめ
- コード規約など、より良い設計や運用につながる話も含まれている
- (proposalなので、全部が採用されている訳ではない)
-
(雑にいうとRFCに似たような感じがある)
-
PEP8などのように世界的な標準となっているものもあり、公式コミュニティによる議論・意思決定みたいなところがあるので可能なものは準拠すると良い
- (なお、PEP8もPEP257もstatusはacceptedでなくactiveだったりする)
PEP 668 – Marking Python base environments as “externally managed”
- 雑にまとめると、「仮想環境以外で
pip install
をするな」 - 仮想環境外での
pip install
はグローバルに影響が及んでしまうyum
やdnf
,apt
などのOS側のパッケージマネージャーで管理しているツールとコンフリクトしてしまう- (他にも色々な環境のPATHが汚されるので、開発上悪影響が出る可能性がある)
プロジェクト単位で必要なパッケージ:
グローバルに必要なパッケージ(CLIツールなど):
yum
やdnf
,apt
などOSのパッケージマネージャーでインストールを行う- pipxなどを使う
- 仮想環境内にpipでCLIツールをインストールし、
$HOME/.local/bin
にシンボリックリンクを作成するツール
- 仮想環境内にpipでCLIツールをインストールし、
- ユーザー単位でのインストール(U*ix系OSでは
$HOME/.local
以下にインストールされる)で、CLIツールのインストールなどで使われるケースが多かった - が、PEP668違反になるので、今後はpipxなどを使うと良さそう
- デフォルト設定でPEP668を強制する設定になっている
- 参考: 仮想環境外でpipを使うとエラーが出る
class: center, middle