python居家旅行必备的pyenv,virtualenv

本文介绍了如何使用pyenv和virtualenv解决Python版本管理和库依赖冲突问题。通过pyenv可以轻松安装和切换Python的不同版本,而virtualenv则帮助创建隔离的环境以避免库之间的冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不论是java还是c++,都有库依赖的问题,c++中叫dll hell,java中也有类似的现象,java也存在不同版本编译的runtime报错问题。既然这些语言都有,那么python也不例外,只是python的现象更严重一些。2.x和3.x语法不兼容,库依赖就更不兼容了。而linux和mac osX都有预装的python版本,如果不注意的话,就会出现程序A依赖库Lib1,而程序B依赖库Lib2,导致不兼容。或者是系统是2.7的python,但是你想用3.5,这类问题是很头疼的。所以你需要pyenv和virtualenv来解决这些wtk的问题。

pyenv,按规矩先贴地址:https://github.com/pyenv/pyenv/,它能管理多个python版本,并且还能实现版本间的切换,还不影响系统中已有的版本。

virtualenv,按规矩再贴地址:https://github.com/pyenv/pyenv-virtualenv/,注意我贴的不是原始的virtualenv,而是pyenv配合使用的。virtualenv是包管理工具,也就是库管理工具。它能解决的是各种库之间的冲突。

一句话就是,pyenv用来管理python自身的版本,virtualenv用来管理某个python环境下的包。这样就能解决文章开头提到的问题。具体原理这里就不解释了,篇幅有限。

下面来说一下安装,mac osX下的安装用brew就可以了:
brew install pyenv
brew install pyenv-virtualenv

安装完成以后,还有一个事情要注意,pyenv安装python环境的时候有一些库依赖要安装。如果不清楚要装哪些就等报错以后再一个一个装好了。比如我遇到的错误就是这样:

https_proxy=socks5://127.0.0.1:1086 pyenv install 3.5.3·

Downloading Python-3.5.3.tar.xz...

-> https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz

Installing Python-3.5.3...

**BUILD FAILED** (OS X 10.12.4 using python-build 20160602)

Inspect or clean up the working tree at /var/folders/w4/l6gnykmn5nn04r1l4ply4q340000gn/T/python-build.20170513141638.4369

Results logged to /var/folders/w4/l6gnykmn5nn04r1l4ply4q340000gn/T/python-build.20170513141638.4369.log

Last 10 log lines:

File "/private/var/folders/w4/l6gnykmn5nn04r1l4ply4q340000gn/T/python-build.20170513141638.4369/Python-3.5.3/Lib/ensurepip/__main__.py", line 4, in <module>

ensurepip._main()

File "/private/var/folders/w4/l6gnykmn5nn04r1l4ply4q340000gn/T/python-build.20170513141638.4369/Python-3.5.3/Lib/ensurepip/__init__.py", line 209, in _main

default_pip=args.default_pip,

File "/private/var/folders/w4/l6gnykmn5nn04r1l4ply4q340000gn/T/python-build.20170513141638.4369/Python-3.5.3/Lib/ensurepip/__init__.py", line 116, in bootstrap

_run_pip(args + [p[0] for p in _PROJECTS], additional_paths)

File "/private/var/folders/w4/l6gnykmn5nn04r1l4ply4q340000gn/T/python-build.20170513141638.4369/Python-3.5.3/Lib/ensurepip/__init__.py", line 40, in _run_pip

import pip

zipimport.ZipImportError: can't decompress data; zlib not available

make: *** [install] Error 1

大家看到上面是加了代理的,不加代理的话pyenv和pip安装非常慢,由于众所周知的原因,这里就不解释了。当然也可以选择使用国内的一些pip镜像,但因为国内的镜像老是短命,现在我还是更倾向于使用代理。

mac下还要执行一句话:

xcode-select --install

现在开始安装python3.5

pyenv install —list

列出所有可选的python环境,我想安装3.5,然后:

    192:zyctd shihuaping$ https_proxy=socks5://127.0.0.1:1086  pyenv install 3.5.3

    Downloading Python-3.5.3.tar.xz...

    -> https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz

    Installing Python-3.5.3...

    Installed Python-3.5.3 to /Users/shihuaping/.pyenv/versions/3.5.3

好,安装成功。然后切换到3.5.3,如果不手工切换,仍然是使用的系统的版本。

pyenv local 3.5.3

到此为止,解决了python版本的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值