我在我的开源项目中添加了对Python 3.x的支持,并希望在我的tox.ini中添加Py32和Py33测试环境。我已经有可以正常工作的Py26和Py27 tox环境,并且我刚刚从自制软件安装了Python 3.3,并使Py33 tox环境运行良好。

问题似乎是自制软件没有明显的方法安装3.3和3.2以及稍加扩展的Googling都无法解决问题。

做到这一点的最佳方法是什么,这不会导致我进一步陷入困境?如果这是最好的解决方案,我很乐意从源代码构建,并且已经取得了成功,但是如果小刀可以完成工作,我不想打破斧头。)

我正在运行OS X 10.8.4

#1 楼


问题似乎在于,自制软件没有明显的方式来安装3.3和3.2,并且在某种程度上扩展了Google搜索没有给出答案。

-尝试以下解决方案进行安装多个带有brew的Python 3.x版本:


确保没有安装任何Python 3.x:
brew uninstall python3


然后将cd放到brew目录中,通常是/usr/local
cd /usr/local


然后列出Homebrew中所有可用的Python 3.x版本:
brew versions python3


,然后从此处按照所需Python版本的安装说明进行操作。



评论


甜!这样就完成了:)现在,我可以使用tox来测试所有python 2.6、2.7、3.3和3.4了:)

–斯堪尼
2014年6月23日在0:27



酿造版本已被删除

– Wim
2015年6月9日下午4:53

#2 楼

@ dimitry-cheremushkin引用的安装说明已更改,建议改用pyenv。 Tox和Pyenv可以像这样一起使用:

首先我们确保已安装pyenv

$ brew update
$ brew install pyenv


然后我们安装了所有需要的python带有pyenv的版本。这可能需要一些时间。请参阅python.org/downloads以获取可用版本。

$ pyenv install 2.6.9 && pyenv ... && pyenv install 3.5.0


在setup.py目录中,让我们如下运行pyenv local ...。它将创建.python-version文件,该文件存储要使用的版本。

$ pyenv local 2.6.9 2.7.10 3.2.6 3.3.6 3.4.3 3.5.0


因此,pyenv将Python发行版安装到目录~/.pyenv/shims中。为了找到它们而不是默认的Python,必须将dir放在PATH环境变量之前。即使存在更多永久解决方案,也可以通过以下方法完成一个终端会话:

$ eval "$(pyenv init -)"
$ echo $PATH
/Users/myname/.pyenv/shims:/usr/bin:...


建议运行以下操作以确保垫片具有正确的包装:

$ pyenv rehash


现在,让我们假设以下tox.ini

[tox]
envlist = py26,py27,py30,py31,py32,py33,py34,py35
[testenv]
deps=
    nose2
    unittest2
commands=nose2


最后我们可以全部运行tox环境:

$ tox
...
py26: commands succeeded
py27: commands succeeded
py30: commands succeeded
py31: commands succeeded
py32: commands succeeded
py33: commands succeeded
py34: commands succeeded
py35: commands succeeded
congratulations :)


评论


我不太明白.python-version是做什么的。为什么需要它?是否应该致力于版本控制?

– Flimm
16年5月2日在14:28

@Flimm .python-version告诉pyenv应该在当前目录中提供哪些python版本,以及速记(如python或python3)应引用的确切版本。第一行定义了在调用python时要使用的版本。如果您希望其他开发人员使用pyenv来测试存储库中的代码,那么我认为您也应该提交.python-version。

– AkseliPalén
16年5月7日在16:20

#3 楼

一种选择是使用MacPorts:

$ sudo port install python34 python35
[...]
$ python3.4 -V
Python 3.4.6
$ python3.5 -V
Python 3.5.3


还可以选择在运行python3时应使用哪个版本:

$ port select python3
Available versions for python3:
    none
    python34 (active)
    python35
$ sudo port select python3 python35
Password:
Selecting 'python35' for 'python3' succeeded. 'python35' is now active.