pyenv安装多个python,但只识别一些python
我正在尝试启动并运行pyenv(macosx),这样我就可以使用tox/detox来测试代码和多个python环境。我能够安装多个python3版本,然后在所有版本上使用了pyenv安装多个python,但只识别一些python,python,python-3.x,tox,pyenv,Python,Python 3.x,Tox,Pyenv,我正在尝试启动并运行pyenv(macosx),这样我就可以使用tox/detox来测试代码和多个python环境。我能够安装多个python3版本,然后在所有版本上使用了pyenv global。执行此操作后,pyenv versions返回以下列表: system * 3.2.6 (set by /Users/Workspace/.pyenv/version) 3.3.6 3.4.6 3.5.3 3.6.1 然而,只有3.4和3.5被认可(以及2.7.8,我认为是“系统
pyenv global
。执行此操作后,pyenv versions
返回以下列表:
system
* 3.2.6 (set by /Users/Workspace/.pyenv/version)
3.3.6
3.4.6
3.5.3
3.6.1
然而,只有3.4和3.5被认可(以及2.7.8,我认为是“系统”):
知道是什么导致了这种行为吗?tox/detox同样无法找到除3.4/3.5之外的任何Python版本
编辑:看起来pyenv已经安装了所有的环境,但是python3.x
命令没有找到它们python3.4
和python3.5
正在运行,因为它们发现了以前的顶级安装。pyenv which python3.x.y
vs.python3.x[--version]
的结果如下所示
$ pyenv which python3.2
/Users/Workspace/.pyenv/versions/3.2.6/bin/python3.2
$ python3.2 --version
-bash: python3.2: command not found
$ python3.2
-bash: python3.2: command not found
pyenv which python3.3
/Users/Workspace/.pyenv/versions/3.3.6/bin/python3.3
$ python3.3 --version
-bash: python3.3: command not found
$ pyenv which python3.4
/usr/local/bin/python3.4 # old install
$ python3.4 --version
Python 3.4.3 # not 3.4.6 installed by pyenv
$ pyenv which python3.4.6
pyenv: python3.4.6: command not found
$ python3.4.6 --version
-bash: python3.4.6: command not found
$ pyenv which python3.5
/Users/Workspace/.pyenv/versions/3.5.3/bin/python3.5
$ python3.5 --version
Python 3.5.2 #Linked to my old 3.5.2 install instead of pyenv 3.5.3 install
$ pyenv which python3.6
/Users/Workspace/.pyenv/versions/3.6.1/bin/python3.6
$ python3.6 --version
-bash: python3.6: command not found
但是,按照下面答案中的建议安装tox-pyenv允许tox找到并使用所有这些环境 pyenv解释器发现未与tox核心集成。所以,一切工作都是因为tox碰巧发现了一些它已经应用的不知道的发现方法 有两种方法可以使这项工作始终如一:
pyenv本地系统3.2.6 3.3.6 3.4.6 3.5.3 3 3.6.1
的项目中,tox应找到所有这些系统。如果您希望无论身在何处都将此设置为默认设置,则不能将pyenv global
设置为完全相同的设置。列表中的第一个是仅在调用python时调用的解释器,但所有其他解释器也应处于活动状态,因此对tox是可发现的您可以使用
pyenv global
设置所需的所有版本。例如:
pyenv global 3.6.0 3.5.3 3.4.6 2.7.10
我对我的库和tox运行使用这种方法,没有任何问题:)这就是我所说的“在所有版本上使用pyenv global”。不过,谢谢。您是否以与我的示例相同的方式启动了该命令(同时启动所有版本)?如果运行
pyenv global
输出是什么?(你应该看到所有的版本,否则如果你只得到一个,这意味着我的第一个问题的答案是否定的)是的,我看到了。pyenv global
的输出是所有版本的列表。我在其他评论中有更多的阐述,另外还有我原来问题的附录。神秘的是,pyenv似乎已经成功安装了这些版本,但是在3.2到3.6版本中使用python3.x
要么找不到python,要么找不到旧的顶级安装。但是:安装tox-pyenv神奇地解决了这个问题!pyenv version
(末尾没有s)返回什么?奥利弗:它返回一个system plus 3.x.x版本的列表,按照全局/本地命令中列出的顺序,带有(由/Users/Workspace/Desktop/pydnmr tox/.python version设置)
我也注意到类似的不一致,但还没有机会确定它们,这就是为什么tox-pyenv是一个很好的替代品。pyenv-global和pyenv-local都不起作用,但安装tox-pyenv起了作用。我读到tox-pyenv告诉tox使用pyenv来进行路径发现。我试着这样做,发现了奇怪的行为。我会在问题的末尾加上它。
pyenv global 3.6.0 3.5.3 3.4.6 2.7.10