请教下 Python 上的包管理器和虚拟环境
刚学 python, 对这方面不是很了解.
对 npm 比较熟悉, 所以拿 npm 来类比.
流行的 python 版本管理器是 pyenv 吗? 类似 nodejs 上的 fnm n nvm
流行的 env 环境是 3.3 开始自带的 venv 吗? 还是 poetry (感觉用起来很麻烦)
有类似 pnpm 使用硬链接减少磁盘占用的方案吗?
有办法让 shell(zsh) 进入目录自动 activate env 吗? 类似识别 .nvmrc 文件自动切换
目前是使用 pyenv + venv
vscode 能自动切换版本, 但 shell 方案没找到
pyvenv.cfg里都是绝对路径,python 版本或者项目改名/移动路径岂不是很麻烦
测试新建项目, pip install -r requirements.txt 又从网络重下了一遍
是我搜索能力太差还是本来就这样, 怎么感觉比 js 生态还原始.
python 包管理和虚拟环境工具还是挺多的,可参考: alpopkes.com/posts/python/packaging_tools/
- 个人感觉 pyenv 没那么流行,因为 pyenv 要在本机编译,会很耗时。要用系统包管理没提供的版本的话,Ubuntu 可以用 deadsnakes ppa 源,macOS 可以用 Homebrew ,其他系统如 CentOS 可以用通用的 MiniConda 。2. 我自己是习惯用 venv 。3. 似乎无?
直接用 miniconda 不就好了
用这个吧 github.com/astral-sh/uv自动 source 就在 .zshrc 里加 . .venv/bin/activate
最近又出了个 uv ,速度特别快,但我习惯用国内作者开源的 pdm
js 生态可不原始,一直都是最具活力的生态。python 现在现代的工具链就 rye 吧 rye-up.com/相当于 rustup for python 。
- shell 里 pyenv 支持 .python-version 文件指定 Python 版本,但是大部分时间一下其实不是选择版本而是激活虚拟环境2. poetry 使用起来常用命令并不多,最多的还是 poetry add == npm add --save ...3. 没有
环境管理用 miniconda, 注入配置后是可以进去到对应目录自动切换 shell 环境的
说句实话,现在 python 的虚拟环境管理没有一个好用的,如果不用切换 python 版本,就用自带的 venv 。等哪天 rye 完成历史使命了,功能合并到 uv 里去了,就用 uv 吧。
pip 一把梭 虽然 python 的包管理狗屎但是也比 npm 好......另外 python 包的小心比 npm 占用要小的多的多
喜欢用自带的 venv ,如无必要,勿增实体
以前我也很爱用 pyenv后来我用了 conda ,回不去了
用 rye
我更奇葩,miniconda 装 python,再用 venv 启动虚拟环境,activate 后 pip 装包
😳一直 venv pip 的路过。。。
#10 3.? 后面不让一把梭, 强制要开隔离环境. 然后我就开始注意到包的版本隔离问题和离线缓存问题.
我现在倒是用的 poetry ,好处就是不用自己花心思在虚拟环境上,它会维护虚拟环境,想进虚拟环境执行 poetry shell 就行,但平时反而不需要这么做,因为它其实是打开一个虚拟环境里面的 shell 。如果仅仅是执行虚拟环境里面的某个指令只需要 poetry run xxx 这样就行。
Conda 一把梭
#4 看起来前景不错, 但我遇到一个问题, 似乎不支持设置镜像, --trusted-host 还在讨论中
miniconda
在尝试使用 rye ,但 vscode 不能自动识别 rye 安装的 python 解释器
poetry+pyenv
rye + uv + ruff 用起来还算流畅
1 以 python 的发展速度,似乎多版本管理器并没什么价值啊?4 那其实开销更大,需要在 PS1 里做手脚吧
第四个问题 direnv 可以做到,非常简单
我一般是 pyenv + pipenv
就我个人而言,pyenv + pyenv 的 virtualenv 就足够。pyenv virtualenv 的组合很方便,在项目目录下设置下 pyenv local 指定你要用的 venv ,vscode 之类的可能也要选一下,设置一次之后就没有什么烦恼了。
4 可以自己设置 zsh 的 cd hook ,当发现当前目录有 venv 或者 .venv 就自动 source
4 pyenv 和 conda 应该都能做到
自己玩玩可以折腾如果正式环境或公司开发建议用 miniconda, 不建议花时间在折腾这事上面
doks-siyehua.vercel.app/blog/%E4%B8%80%E6%96%87%E8%AF%BB%E6%87%82-ai-%E9%A1%B9%E7%9B%AE%E7%8E%AF%E5%A2%83%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/ 看这个
不管是热门的、冷门的,还是常用的、偶尔用的,只要实用好用的。 抛砖引玉: Wisereminder: 免费的事件提醒工具,可以用作每日的工作提醒。 Motrix: 一款全能的…
RT 我发现我司很多开发以及一些外采的系统 都很喜欢把程序日志写入到数据库中。 数据库压力、性能开销等都会受到影响 我认为应该,压力,性能开销花钱可以解决。持久化的日志没有的…
接上文,原先计划采购华为昇腾做适配,但是调研了一圈发现采购排产要一个月,模型适配时间无法预估,所以两条腿走路,继续用 4090 浪潮给了个配置报价 浪潮 NF5280M6 cp…