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

252 天前
 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 生态还原始.

5757 次点击
所在节点    Python
45 条回复
iorilu
245 天前
@jqtmviyu 那你真不如用哪个 rye 了, 内部用的 uv, 自带安装各版本 python, 何必弄好几个东西
jqtmviyu
245 天前
@iorilu #41 哈哈, 我讨厌使用另外的一套命令. 特别是类似 poetry run 那种.
miniconda 和 miniforge 也用不习惯. 习惯了自带的.venv 挺好用的. vscode 支持自动切换.
pyKane
244 天前
想不明白上面都弄的那么复杂干嘛。
包管理用 pip
虚拟环境用自带的 venv
咋就满足不了你们的需求了呢。
多版本无非就是在系统里多装个不同版本的 Python ,然后在你的项目里 创建你需要的版本的 Python venv 环境就行了。开发哪个项目就过时去 source .venv/bin/activate 就开始干少顾。不是挺好么 pyCharm 对 venv 兼容性也非常好。
对于新手来上,就用上面两个就行了。别整太复杂了,用 Python 就是为了干活的。不是折腾的。
yucongo
236 天前
rye + uv: 又快有好。其实 rye 本身已经实验性直接植入 uv 了
FkingMan
224 天前
pyenv 就可以管理 python 版本和创建虚拟环境,不太需要 venv

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

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

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

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

© 2021 V2EX