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

29 天前
 einsdisp

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

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

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

3706 次点击
所在节点    程序员
50 条回复
einsdisp
29 天前
备注一下, 本文讨论的是 CPython 的 version manager, 不是 package 的 version manager
mijazz
29 天前
类 conda 的有 Micromamba 可选;赤裸一点的还有 pyenv (pyenv-win) , 看看有没有顺眼的。

印象中确实都是用 tarball 现用现 build 。pyenv 里也有 NOTE: Most Pyenv-provided Python releases are source releases and are built from source as part of installation (that's why you need Python build dependencies preinstalled). 要不试试往 asdf 这些方向试试? https://github.com/asdf-community/asdf-python

不过我一直都是编译几个主要版本就眼不见为净了,arch 系的 base-devel 这些也没有不装的道理。心理安慰一下 CPython 现 build 可以增强 30%

https://github.com/pyenv/pyenv/wiki#how-to-build-cpython-for-maximum-performance
lz4261
29 天前
实际上,对于 Python ,也存在能直接安装预编译二进制版的版本管理器工具,这样你就不需要在系统上安装编译依赖。下面列举几个可以考虑使用的 Python 版本管理器:

1. **pyenv**: 虽然默认情况下 pyenv 会从源代码编译 Python ,但它也支持安装预编译的二进制版本。你可以使用`python-build`插件来安装预编译的 Python 二进制,这样就不需要自己编译了。

2. **pythonz**: 和 pyenv 类似,pythonz 也可以让你安装预编译的 Python 二进制版本。它会自动处理安装过程,所以你不需要手动编译 Python 。

3. **conda**: 你提到不想使用 anaconda 或 miniconda ,但实际上它们是非常强大的环境管理和 Python 版本管理工具。conda 包管理器允许你安装来自 Anaconda 仓库的 Python 预编制二进制文件,它们是已经编译好的版本,可以避免依赖问题和编译问题。

4. **pipx**: 虽然它主要是用来全局安装和隔离 Python 命令行工具的,但它也允许你使用不同的 Python 版本,它会管理虚拟环境而不需要手动设置。

5. **Windows 上的 py**: windows 有一个 `py` 启动器,可以让你安装多个 Python 版本并且很容易切换。`py` 是 Python 的官方启动器,它会根据你的需求自动选择合适的 Python 解释器版本。

这些工具都有各自的优势和限制,你可以选择最适合你需求的工具来管理 Python 版本。例如,如果你不想处理任何编译过程并且希望直接从预编译好的版本中选择,使用 conda 可能是比较好的选择。如果你想要一种轻量级的版本管理器,可能 pyenv 的 python-build 插件会是一个合适的选择。

你还可以考虑使用 Docker 这样的容器化技术,它可以让你在一个隔离的容器中安装 Python 的任何版本,而不会影响到你的系统环境。这样你就可以在不在系统上安装任何编译依赖的情况下,使用不同版本的 Python 。
-- 以上:来自 GPT-4
einsdisp
29 天前
@lz4261
根本胡扯的答案,也不验证一下就复制过来,误人子弟!
pyenv, pythonz 根本不支持直接安装装预编译二进制, 都需要编译.
LeeReamond
29 天前
看不太懂 OP 想要干什么,你想预编译直接上 pypi 就能下到预编译二进制文件。只不过可能是因为 cffi 有版本签名还是什么其他的原因,没细研究过,动态链接库不跨版本兼容,再加上跨平台,就只能 CI 维护。所以如果为了保证最大兼容性或者作者懒得写 CI 了那就是下载编译。但是确实是 pip 直接就能带二进制,因为 whl 打包时候 has_ext_modules 就可以引入。你电脑上装个 numpy 难道还本地编译?
wizardyhnr
29 天前
现在主流的 linux 应该都 maintain 不同的 python 二进制包了,比如 ubuntu 除了默认的系统 python 版本外还有 python3.10 ,python3.11 ,你安装好了配合 pyenv 食用就可以了。
Jirajine
29 天前
用 rye , 相当于 rustup for python
tywtyw2002
29 天前
nix 啊。
想要哪个版本要哪个版本,py 一般都有 binary cache 的
brew 只有部分 py 二进制版本。

pip 装包的有 c lib 的就要看 pip 上面有没有提供 precompile 了。
phrack
29 天前
孤陋寡闻,Python 几十年了还会有你想到了没人想到去解决的问题?全平台单文件的发行版本都有人做,最新的 release 是 4 月 15 号发行的。

你见过吗?

另外你知道连 docker 镜像都能编译成单文件吗?

孤陋寡闻没错,任何人都只知道自己见过的东西,但是你嘴比较臭。我就不给你上链接了,自己找吧。
Cooky
29 天前
miniconda 很臃肿吗?自带的东西都该带的
skiy
29 天前
同七楼。用 rye…就是 cpython 二进制文件…从 github 下载的,所以得魔法。
NessajCN
29 天前
你这个洁癖跟正常人理解的洁癖不太一样啊
我们能的洁癖都是受不了别人编译好的版本,因为谁知道里面都塞了什么私货预装了什么木马
当然是自己编译的最安心
所以极端洁癖都是装 Gentoo 的
listenfree
29 天前
有洁癖可以在 docker 里面,或者在 github action 里面 pip3 wheel 造轮子,把轮子拿来用进行了。
1800x
29 天前
venv
官方自带
mayli
29 天前
就 rye 吧,体验还可以
bigtear
29 天前
站友开发的 vfox 符合你的需求
bigtear
29 天前
ysc3839
29 天前
要官方有提供预编译包才行,Python 官方只提供了 Windows 和 macOS 的预编译包,所以没有
ysc3839
29 天前
@ysc3839 Ubuntu 的话,deadsnakes ppa 源有新版的预编译的 Python 。其他 Linux 发行版似乎就不好找了,可能还是得编译。
ysc3839
29 天前
@ysc3839 突然想起来,Homebrew 也支持 Linux 的,也可以试试 https://formulae.brew.sh/formula/python@3.12

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

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

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

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

© 2021 V2EX