刚学 python, 对这方面不是很了解. 对 npm 比较熟悉, 所以拿 npm 来类比.
.nvmrc
文件自动切换目前是使用 pyenv + venv
pyvenv.cfg
里都是绝对路径,python 版本或者项目改名/移动路径岂不是很麻烦pip install -r requirements.txt
又从网络重下了一遍是我搜索能力太差还是本来就这样, 怎么感觉比 js 生态还原始.
1
AilF 232 天前
python 包管理和虚拟环境工具还是挺多的,可参考:
https://alpopkes.com/posts/python/packaging_tools/ |
2
ysc3839 232 天前 via Android
1. 个人感觉 pyenv 没那么流行,因为 pyenv 要在本机编译,会很耗时。要用系统包管理没提供的版本的话,Ubuntu 可以用 deadsnakes ppa 源,macOS 可以用 Homebrew ,其他系统如 CentOS 可以用通用的 MiniConda 。
2. 我自己是习惯用 venv 。 3. 似乎无? |
3
linvaux 232 天前
直接用 miniconda 不就好了
|
4
NessajCN 232 天前
|
5
AilF 232 天前 2
最近又出了个 uv ,速度特别快,但我习惯用国内作者开源的 pdm
|
6
Jirajine 232 天前
|
7
crackidz 232 天前
1. shell 里 pyenv 支持 .python-version 文件指定 Python 版本,但是大部分时间一下其实不是选择版本而是激活虚拟环境
2. poetry 使用起来常用命令并不多,最多的还是 poetry add == npm add --save ... 3. 没有 |
8
BBCCBB 232 天前
环境管理用 miniconda, 注入配置后是可以进去到对应目录自动切换 shell 环境的
|
9
coolair 232 天前 via Android 1
说句实话,现在 python 的虚拟环境管理没有一个好用的,如果不用切换 python 版本,就用自带的 venv 。
等哪天 rye 完成历史使命了,功能合并到 uv 里去了,就用 uv 吧。 |
10
chengxiao 232 天前
pip 一把梭 虽然 python 的包管理狗屎但是也比 npm 好......
另外 python 包的小心比 npm 占用要小的多的多 |
11
yolee599 232 天前 via Android 1
喜欢用自带的 venv ,如无必要,勿增实体
|
12
mikaelson 232 天前
以前我也很爱用 pyenv
后来我用了 conda ,回不去了 |
13
zcf0508 232 天前 via Android
用 rye
|
14
paopjian 232 天前
我更奇葩,miniconda 装 python,再用 venv 启动虚拟环境,activate 后 pip 装包
|
15
Alliot 232 天前 via Android
😳一直 venv pip 的路过。。。
|
17
zhanghua0 232 天前
我现在倒是用的 poetry ,好处就是不用自己花心思在虚拟环境上,它会维护虚拟环境,想进虚拟环境执行 poetry shell 就行,但平时反而不需要这么做,因为它其实是打开一个虚拟环境里面的 shell 。如果仅仅是执行虚拟环境里面的某个指令只需要 poetry run xxx 这样就行。
|
18
ShawnSky 232 天前 via iPhone
Conda 一把梭
|
20
1800ml 232 天前
miniconda
|
21
selfeasy 231 天前
在尝试使用 rye ,但 vscode 不能自动识别 rye 安装的 python 解释器
|
22
knightdf 231 天前
poetry+pyenv
|
23
l1xnan 231 天前
rye + uv + ruff 用起来还算流畅
|
24
julyclyde 231 天前
1 以 python 的发展速度,似乎多版本管理器并没什么价值啊?
4 那其实开销更大,需要在 PS1 里做手脚吧 |
25
Easedge 231 天前
第四个问题 direnv 可以做到,非常简单
|
26
qYs9wxnXG96c6z1t 231 天前 via iPhone
我一般是 pyenv + pipenv
|
27
imycc 231 天前
就我个人而言,pyenv + pyenv 的 virtualenv 就足够。
pyenv virtualenv 的组合很方便,在项目目录下设置下 pyenv local 指定你要用的 venv ,vscode 之类的可能也要选一下,设置一次之后就没有什么烦恼了。 |
28
zzhaolei 231 天前
4 可以自己设置 zsh 的 cd hook ,当发现当前目录有 venv 或者 .venv 就自动 source
|
29
574402766 231 天前
4 pyenv 和 conda 应该都能做到
|
30
iorilu 231 天前
自己玩玩可以折腾
如果正式环境或公司开发建议用 miniconda, 不建议花时间在折腾这事上面 |
31
TArysiyehua 231 天前
|
32
jqtmviyu OP @zhanghua0 #17 poetry 似乎会绑定当前的 python 环境, 官方文档也说需要单独提供环境.
这可能导致问题就是, 你在 3.12.1 安装的 poetry, 后来升级到 3.12.2, 它还是绑定的 3.12.1, 你不能卸载了它. |
35
jqtmviyu OP 感谢楼上的各位: 暂时采纳 pyenv + uv + direnv
pyenv 管理版本 uv 代替 pip, 会优先使用本地缓存 direnv 自动激活 venv |
36
mingwiki 230 天前
@yolee599 #11 最近发现 wsl2 里面的 venv 无法隔离环境,换了 virtualenv 才好。服务器里面的 venv 是正常的。所以推荐 virtualenv
|
37
supergeek1 230 天前
@paopjian 差不多的流程,不过我是用的 micromamba 装 python
|
38
mMartin 230 天前
|
39
frostming 230 天前
3. 有类似 pnpm 使用硬链接减少磁盘占用的方案吗?
再说三遍 pdm 支持 pdm 支持 pdm 支持 很遗憾没人知道 |
40
zhanghua0 229 天前
@jqtmviyu #32 确实,不过我是在 Linux 这边,poetry 的更新都是交给软件包管理器的,所以这个问题影响不大,Python 更新的时候 poetry 也会一起被更新。
Windows 那边估计真只能自己维护一下每次 Python 更新也要重新装一遍 poetry 了。 |
42
jqtmviyu OP @iorilu #41 哈哈, 我讨厌使用另外的一套命令. 特别是类似 poetry run 那种.
miniconda 和 miniforge 也用不习惯. 习惯了自带的.venv 挺好用的. vscode 支持自动切换. |
43
pyKane 224 天前 1
想不明白上面都弄的那么复杂干嘛。
包管理用 pip 虚拟环境用自带的 venv 咋就满足不了你们的需求了呢。 多版本无非就是在系统里多装个不同版本的 Python ,然后在你的项目里 创建你需要的版本的 Python venv 环境就行了。开发哪个项目就过时去 source .venv/bin/activate 就开始干少顾。不是挺好么 pyCharm 对 venv 兼容性也非常好。 对于新手来上,就用上面两个就行了。别整太复杂了,用 Python 就是为了干活的。不是折腾的。 |
44
yucongo 217 天前
rye + uv: 又快有好。其实 rye 本身已经实验性直接植入 uv 了
|
45
FkingMan 204 天前
pyenv 就可以管理 python 版本和创建虚拟环境,不太需要 venv
|