Python 除了 Conda 就没有其它的 二进制下载(非源码编译)的版本管理器了吗?

296 天前
einsdisp  einsdisp

主流的编程语言, 都有一个的 version manger, (例如 Node 有大名鼎鼎的 NVM), 可以下载并管理编程语言的不同版本, 并且是直接下载 precompiled 二进制的, 不需要编译.

只有 python, 了解到几个主流的 version manager, 都是下载源码, 还得编译, 还得在 linux 系统中用包管理器安装一堆编译相关依赖(make, gcc 等等一大坨), 甚是蛋疼.

如果本人有洁癖, 不想在系统中安装一堆编译依赖, 也不想使用臃肿的 anaconda/miniconda, 就没别的选择了吗? 还是我孤陋寡闻了?

6479 次点击
所在节点   程序员  程序员
50 条回复
Akkuman
Akkuman
296 天前
@phrack 我目前只知道 python-standalone-build ,看了 rye 的源码发现用的是这个,你说的 docker 编译成单文件是不是 zig 写的一个工具,那个工具前几个月试用过,兼容性挺差的
moqsien
moqsien
296 天前
@NessajCN 源码编译就没有可能植入木马?心理安慰而已吧。没有绝对的安全。
NessajCN
NessajCN
296 天前
@moqsien 源码我可以自己查啊
没查出来是我自己菜,技不如人,
但是二进制没法查,不公平,这就不让人服气了
feedcode
feedcode
296 天前
我理解的洁癖是新建一个虚拟机专门做 build ,然后把二进制分发到其他机器

你这个需求随便找个别人 build 好的下载就行,比如说 rye 下载用的 python-build-standalone git repo
moqsien
moqsien
296 天前
@NessajCN 可以的。当你把这些编译器、解释器的代码都看完了,绝对超神。
h404bi
h404bi
296 天前
你不喜欢 conda 拖家带口可以选 Linuxbrew, vfox, vmr 都支持直接拉二进制产物,不过 vmr 背后一样还是 conda-forge 的源。
vmr: https://github.com/gvcgo/version-manager
NessajCN
NessajCN
296 天前
@moqsien 查代码又不用一行一行看。你可能没听过 git 这个工具,也不知道 git diff 这个命令,这不怪你。
ClericPy
ClericPy
296 天前
https://github.com/indygreg/python-build-standalone 这个?目前好使的绿色版解释器就它稳定一些,很多地方没网络就靠这玩意跑程序了。Windows 上直接用 embed 的
lambdaq
lambdaq
296 天前
@ClericPy 正在用这个。感觉良好。
wxf666
wxf666
296 天前
@NessajCN #23 这么久以来,有通过自己查,避免了什么东西吗?

想看看有没有必要,尽量少用别人编译好的二进制。。

moqsien
296 天前
@NessajCN 你好棒
NessajCN
296 天前
@moqsien 确实,好好看好好学
Jirajine
296 天前
@NessajCN 就算你 review 所有 diff ,看到这样的 commit message 你会怀疑吗?
https://github.com/tukaani-project/xz/commit/6e636819e8f070330d835fce46289a3ff72a7b89

关于二进制安全,你忽视了 bootstrap 和 reproducible ,如果你的平台没有从源码 bootstrap ,可能你的编译器就已经有后门了,编译出来新的编译器及再编译出来的所有二进制都是污染的。或者你下载到的源码包存在专为你准备的后门?
NoOneNoBody
296 天前
我明白 OP 的意思,win 有时遇到编译失败的(并非要编译的都失败),报错找不到 cl.exe ,但明明有且在环境变量 PATH 内
很久以前好象是 3.6 版本时,装那个 keras 就遇到(现在不清楚,换了方案没再用 keras ),还有其他少量包也是,在制作方的 commit 也见到有人反馈,那就并不是我一个人的事

@einsdisp
目前还是 miniconda 最好,有些编译不成功的,基本就是包制作方压根没考虑 windows ,只兼容 linux ,那没办法了
http://winpython.github.io/ 这个你可以看看,py3.4 时代用过,现在还有新版维护,不过记忆中也是臃肿的
baobao1270
295 天前
@lz4261 @Livid 使用 AI 生成的内容

Windows 下你其实可以用官方的 Python ,会自带一个 py.exe ,本身就是版本管理工具。比如 py -3.11 <script>.py 可以这样执行脚本
macOS 用 Homebrew ,也可以 Homebrew+pynev ,Homebrew 的 pyenv 可以配置切换成使用 Homebrew 预编译的 Python
Linux 上主流的应该还是 Pyenv ,但是你也可以选择在别的机器上(甚至 GitHub Actions 上)预先编译好然后打包,用的时候直接解压,我就写了一个仓库: https://github.com/baobao1270/pyenv-builds 如果你不放心可以自己 fork 仓库自己用 GitHub Action 编译
Livid
295 天前
@baobao1270 谢谢,那个使用 AI 回复的账号已经被彻底 ban 。
iorilu
295 天前
用 rye 就行了
ClericPy
295 天前
@lambdaq
忘了是不是他们提的 rye 以及以后的大一统 uv 都会用它,不知道有没有后门。速度上没感觉变化,21 世纪了,没必要为了节省一点磁盘或者带宽在本地编译,能绿色版还是绿色版舒服
lambdaq
295 天前
@ClericPy 是的。我也喜欢二进制。自己编译麻烦多不说而且性能优化讲究很多
jqtmviyu
295 天前
我前阵子刚问过这个问题.
pyenv 足够轻量.
uv 比 pip 快.
direnv 自动切换路径

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

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

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

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

© 2021 V2EX