请教下 Python 上的包管理器和虚拟环境

2024-04-12 21:30:10 +08:00
 jqtmviyu

刚学 python, 对这方面不是很了解. 对 npm 比较熟悉, 所以拿 npm 来类比.

  1. 流行的 python 版本管理器是 pyenv 吗? 类似 nodejs 上的 fnm n nvm
  2. 流行的 env 环境是 3.3 开始自带的 venv 吗? 还是 poetry (感觉用起来很麻烦)
  3. 有类似 pnpm 使用硬链接减少磁盘占用的方案吗?
  4. 有办法让 shell(zsh) 进入目录自动 activate env 吗? 类似识别 .nvmrc 文件自动切换

目前是使用 pyenv + venv

  1. vscode 能自动切换版本, 但 shell 方案没找到
  2. pyvenv.cfg里都是绝对路径,python 版本或者项目改名/移动路径岂不是很麻烦
  3. 测试新建项目, pip install -r requirements.txt 又从网络重下了一遍

是我搜索能力太差还是本来就这样, 怎么感觉比 js 生态还原始.

8163 次点击
所在节点    Python
45 条回复
AilF
2024-04-12 21:37:16 +08:00
python 包管理和虚拟环境工具还是挺多的,可参考:
https://alpopkes.com/posts/python/packaging_tools/
ysc3839
2024-04-12 21:37:34 +08:00
1. 个人感觉 pyenv 没那么流行,因为 pyenv 要在本机编译,会很耗时。要用系统包管理没提供的版本的话,Ubuntu 可以用 deadsnakes ppa 源,macOS 可以用 Homebrew ,其他系统如 CentOS 可以用通用的 MiniConda 。
2. 我自己是习惯用 venv 。
3. 似乎无?
linvaux
2024-04-12 21:39:47 +08:00
直接用 miniconda 不就好了
NessajCN
2024-04-12 21:40:16 +08:00
用这个吧
https://github.com/astral-sh/uv
自动 source 就在 .zshrc 里加 . .venv/bin/activate
AilF
2024-04-12 21:40:25 +08:00
最近又出了个 uv ,速度特别快,但我习惯用国内作者开源的 pdm
Jirajine
2024-04-12 21:48:00 +08:00
js 生态可不原始,一直都是最具活力的生态。
python 现在现代的工具链就 rye 吧 https://rye-up.com/
相当于 rustup for python 。
crackidz
2024-04-12 22:14:57 +08:00
1. shell 里 pyenv 支持 .python-version 文件指定 Python 版本,但是大部分时间一下其实不是选择版本而是激活虚拟环境
2. poetry 使用起来常用命令并不多,最多的还是 poetry add == npm add --save ...
3. 没有
BBCCBB
2024-04-12 22:36:51 +08:00
环境管理用 miniconda, 注入配置后是可以进去到对应目录自动切换 shell 环境的
coolair
2024-04-12 22:43:53 +08:00
说句实话,现在 python 的虚拟环境管理没有一个好用的,如果不用切换 python 版本,就用自带的 venv 。
等哪天 rye 完成历史使命了,功能合并到 uv 里去了,就用 uv 吧。
chengxiao
2024-04-12 22:51:00 +08:00
pip 一把梭 虽然 python 的包管理狗屎但是也比 npm 好......
另外 python 包的小心比 npm 占用要小的多的多
yolee599
2024-04-12 23:18:25 +08:00
喜欢用自带的 venv ,如无必要,勿增实体
mikaelson
2024-04-12 23:19:28 +08:00
以前我也很爱用 pyenv
后来我用了 conda ,回不去了
zcf0508
2024-04-12 23:29:37 +08:00
用 rye
paopjian
2024-04-12 23:30:00 +08:00
我更奇葩,miniconda 装 python,再用 venv 启动虚拟环境,activate 后 pip 装包
Alliot
2024-04-12 23:35:33 +08:00
😳一直 venv pip 的路过。。。
jqtmviyu
2024-04-13 06:53:41 +08:00
@chengxiao #10 3.? 后面不让一把梭, 强制要开隔离环境. 然后我就开始注意到包的版本隔离问题和离线缓存问题.
zhanghua0
2024-04-13 07:33:26 +08:00
我现在倒是用的 poetry ,好处就是不用自己花心思在虚拟环境上,它会维护虚拟环境,想进虚拟环境执行 poetry shell 就行,但平时反而不需要这么做,因为它其实是打开一个虚拟环境里面的 shell 。如果仅仅是执行虚拟环境里面的某个指令只需要 poetry run xxx 这样就行。
ShawnSky
2024-04-13 08:08:15 +08:00
Conda 一把梭
jqtmviyu
2024-04-13 08:28:34 +08:00
@NessajCN #4 看起来前景不错, 但我遇到一个问题, 似乎不支持设置镜像, --trusted-host 还在讨论中
1800ml
2024-04-13 09:35:57 +08:00
miniconda

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1032069

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX