blog.euxn.me

pyenv と pipenv による python 環境

2017-11-20 Mon.

概要

python の環境構築では pyenv を代表として、virtualenv、pyenv-virtualenv、venv... 等が存在します。

そんな中、比較的最近登場した pipenv というライブラリが virtualenv を pip と連携してうまく使えるようにしてくれており、これらの紛らわしいライブラリの選定に終止符を打ってくれそうです。

解説

  • pyenv を使用します
    • これは python のビルドを行うためだけに使用し、今回はバージョン管理には使用はしません
    • pyenv で任意の python をインストールし、global に設定します
    • pyenv の shims 経由でも問題ありませんが、今回 pyenv によるバージョン切り替えは行わないため、ビルドしたバイナリに直接 PATH を通しても問題ありません
  • pipenv をインストールします
    • global に設定した python の pip でインストールします
  • pipenv で環境を作成します
    • 任意のディレクトリで $ pipenv install することで virtualenv が ~/.local/share/virtualenvs 以下に作成されます
    • 指定しない場合は元と同じ python バージョンで virtualenv が作成されます
    • --python 3.x.x のように指定した場合、そのバージョンが pyenv でインストールされた上で virtualenv が作成されます
    • 指定できるバージョンは pyenv でインストール可能なものなら対応しているので、 miniconda の環境も作れます
Warning: Python 3.5.3 was not found on your system…
Would you like us to install CPython 3.5.3 with pyenv? [Y/n]:
  • pipenv 経由でプロジェクトを実行します
    • $ pipenv run <commands> で該当の virtualenv の python を PATH に追加した状態で以降のコマンドを実行します。Ruby の bundle exec に近い動作をします
    • $ pipenv shell で現在の shell で virtualenv の python に切り替えます
    • $ pyenv local に相当するコマンドは現在はないようです

Other Works
2024-12-01 Sun.
OpenAPI Spec を出力できる DSL、TypeSpec の実践例
- ドワンゴ教育サービス開発者ブログ

2024-11-16 Sat.
型付き API リクエストを実現するいくつかの手法とその選択
- TSKaigi Kansai 2024

2024-09-10 Tue.
corepack が標準同梱じゃなくなる未来、 mise でパッケージマネージャを管理する
- Zenn

2024-09-10 Tue.
言語環境の管理は *env や *vm を超えて、 mise へ
- Zenn

2024-06-28 Fri.
TypeSpec を使い倒してる
- Kyoto.js 22

2024-05-11 Sat.
Powerfully Typed TypeScript
- TSKaigi 2024

2024-05-10 Fri.
pnpm の node_modules を探検して理解しよう
- ドワンゴ教育サービス開発者ブログ

2024-03-17 Sun.
neverthrow で局所的に Result 型を使い、 try-catch より安全に記述する
- Zenn

2023-12-20 Wed.
レガシーブラウザ向けのビルドオプションを剪定する
- ドワンゴ教育サービス開発者ブログ

2023-05-26 Fri.
Next.js で dynamic import を使い Client だけで動かす Component を実現する
- Zenn

2023-05-02 Tue.
Node.js でファイル名から拡張子を取り除く/取り出すために path.parse を使う
- Zenn

2023-02-27 Mon.
WSL2 で外部からアクセス可能にするために bridge mode を有効にする
- Zenn

2023-01-26 Thu.
init.vim & dein から init.lua & lazy.nvim へ、シンプル設定で移行した
- Zenn

2023-01-13 Fri.
kindle の本をブクログ形式の csv でエクスポートする@2023初春
- Zenn

2023-01-10 Tue.
自宅サーバの移設に際して docker から nerdctl に移行した
- Zenn

2023-01-10 Tue.
自宅サーバを rootless に移行した際のトラブル対応
- Zenn

2021-11-11 Thu.
並列実行した Promise で throw されても全てハンドルしたいときの方法(allSettled, finally, etc...)
- Zenn