大家有没有比较好的经验,管理两个版本的 Python , 2 & 3?

2022-05-12 08:45:35 +08:00
 yazoox

发现很多程序的运行环境,都需要 python 支持,而且,版本还不一样。python2 和 python3 都需要。

楼主一直整得不太好(因为不是经常使用),经常一个程序或者环境跑起来,缺 python 。所以特意来请教一下,大家有没有比较好的 best practice ,管理 python 的版本,2 & 3 ,以及对应的 pip 。

macOS 和 windows 都分别怎么设置,比较好用&通用?

谢谢!

7568 次点击
所在节点    Python
70 条回复
palm0322
2022-05-12 09:25:43 +08:00
miniconda +1
silkriver
2022-05-12 09:27:10 +08:00
pyenv 好像只适用于 *nix ,anaconda 是非 Python 程序员和非程序员的最佳选择
yazoox
2022-05-12 09:29:51 +08:00
@leonhao 老项目维护。相信你也不愿意花大功夫,去给老的项目升级编译或者运行环境吧?(没有大的需求,或者变动情况下)
yazoox
2022-05-12 09:30:22 +08:00
可能我没有说清楚,大家好像误会我的意思了。我再补充一点说明。
谢谢
exiledkingcc
2022-05-12 09:45:17 +08:00
linux 的话,可以随便你安装多个 python ,然后用 python 虚拟环境不就行了。
alanhe421
2022-05-12 09:46:09 +08:00
1. 系统全局层面,alias 方式控制两个版本并存,比如 python 默认为 3 ,python2 即版本 2
2. 单个项目层面,个人使用的 JB 的 IDE 直接抹平了这个版本环境问题,本身单个配置下运行环境
ospider
2022-05-12 09:46:18 +08:00
现在还需要 python2 的公司,建议直接辞职……
Latin
2022-05-12 09:49:56 +08:00
NOTE: You can activate multiple versions at the same time, including multiple versions of Python2 or Python3 simultaneously. This allows for parallel usage of Python2 and Python3, and is required with tools like tox. For example, to instruct Pyenv to first use your system Python and Python3 (which are e.g. 2.7.9 and 3.4.2) but also have Python 3.3.6, 3.2.1, and 2.5.2 available, you first pyenv install the missing versions, then set pyenv global system 3.3.6 3.2.1 2.5.2. Then you'll be able to invoke any of those versions with an appropriate pythonX or pythonX.Y name. You can also specify multiple versions in a .python-version file by hand, separated by newlines. Lines starting with a # are ignored.
pyenv 正解
https://github.com/pyenv/pyenv
Oktfolio
2022-05-12 09:52:10 +08:00
我之前学 python 就是被这个环境管理劝退的
mobbdeep
2022-05-12 09:57:22 +08:00
@ospider 开玩笑,很多赚钱的 py2 老项目跑着都很好,只要能一直赚钱,老板可不管你 2 还是 3
BBCCBB
2022-05-12 09:59:27 +08:00
pyenv 好用...
leonhao
2022-05-12 09:59:28 +08:00
@yazoox 如果老板同意我会升级,Python2 社区已经不维护了
Donahue
2022-05-12 09:59:50 +08:00
同时生效也是用 virtual env 就能解决的,你设置路径的时候不要设置 /usr/bin/python , 而是设置成虚拟环境 python 就行了。比如 /virtual/env/path/python 。/usr/bin/python 是个 soft link, 在 activate 虚拟环境的时候指向对应虚拟环境的 python
gesse
2022-05-12 10:00:15 +08:00
virtualenv/pyvenv 利用已经安装的 python 版本虚拟出同一个版本的 python 环境,每个环境可以依赖不同版本的包。

pyenv/anaconda/miniconda 安装不同的 python 版本,且共存

pyenv-virtualenv 安装不同的 python 版本, 并且支持虚拟环境依赖不同版本的包

我的理解是这样的,不知道是否有错误观点。
ospider
2022-05-12 10:04:30 +08:00
@mobbdeep 用 python2 多赚的钱又不分我,我找下份工作可是不需要 python2 这个技能了……
liprais
2022-05-12 10:10:58 +08:00
python2 已经 eol 了都不升级,赚来的钱是准备数据泄漏了交罚款么....
fkdtz
2022-05-12 10:18:36 +08:00
python 有很多包管理和环境管理工具,搞得人头大。
但体验下来感觉还是 pyenv + virtualenv 最符合人类直觉,没有那么多花里胡哨。
pyenv 管理 python 版本做到版本隔离,virtualenv 管理包环境做到项目隔离。
bo233
2022-05-12 10:27:08 +08:00
miniconda 还是挺好用的
anxn
2022-05-12 10:28:30 +08:00
linux 、mac:pyenv
Windows:无
liuxingdeyu
2022-05-12 10:30:14 +08:00
我觉得吧,pyenv+virtualenv 控制环境,py3 和 py2 之间用个进程间通信比如 rpc 啥的,多好

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

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

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

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

© 2021 V2EX