Python venv(虚拟环境)使用了错误的 Python 版本

Posted

技术标签:

【中文标题】Python venv(虚拟环境)使用了错误的 Python 版本【英文标题】:Python venv (virual environment) uses wrong version of Python 【发布时间】:2019-04-21 16:09:55 【问题描述】:

我同时安装了 Python 3.7 和 3.6。但在我的个人资料中,我设置为使用 3.6,这确实是由which python3 报告的版本。

$ which python3 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3

然后我通过运行python3 -m venv venv 创建虚拟环境

我的 venv 中的所有内容都与 3.6 相关联。我通过ls -la venv/bin 和检查venv/pyvenv.cfg 确认了这一点。

我激活了 venv 虚拟环境。

然后我用pip install zappa 安装一个zappa 库。

当我运行zappa deploy 时,我收到一个错误,即不支持 Python 3.7。为什么库会使用未在 virtualenv 中配置的 Python 版本,如何使其使用正确的版本?

(venv) $ zappa deploy
Traceback (most recent call last):
  File "/Users/t/Projects/djzappa/Spheres/venv/bin/zappa", line 7, in <module>
    from zappa.cli import handle
  File "/Users/t/Projects/djzappa/Spheres/venv/lib/python3.7/site-packages/zappa/__init__.py", line 12, in <module>
    raise RuntimeError(err_msg)
RuntimeError: This version of Python (3.7) is not supported!
Zappa (and AWS Lambda) support the following versions of Python: ['2.7', '3.6']

注意:我不使用每个人都建议的 virtualenv,以及其他现有答案所指的。

【问题讨论】:

Using Python 3 in virtualenv的可能重复 不,它不是重复的。 使用pip3安装zappa,pip可能指向3.7版本。 是的,实际上是重复的。 - 你标记为答案的答案,可以在我标记的那个中找到。 哪一个?因为我找不到一个解释不同版本 Python 的安装顺序的解释——这就是解决我的问题的原因。包括评论讨论。 【参考方案1】:

创建环境时使用这个:

virtualenv --python=/usr/bin/python3.6 

但是如果你想使用venv,首先检查你终端中的python3是否如你所愿引用python3.6

如果不是 - 使用 python3.6 的完整路径而不是 python3 -m venv venv 中的唯一 python3 运行您的命令。

编辑:为什么您的别名 python3 指的是 python3.7 - 这可能取决于您使用的操作系统和安装顺序。很难说。

【讨论】:

我不使用 virtualenv。我使用'python3 -m venv'。 尝试使用 /usr/bin/python36 -m venv;如果还是不行,请安装virtualenv。 $ /usr/bin/python36 -bash: /usr/bin/python36: 没有这样的文件或目录 $ which python3 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 这个文件不是符号链接吗? /Library/Frameworks/Python.framework/Versions/3.6/bin/python3【参考方案2】:

Python 版本与 virtualenv python 版本不同,这就是它抱怨的原因。 您可以重新创建您的虚拟环境(删除现有的)并使用以下命令

virtualenv --python=your python version herevenv 或者

mkvirtualenv venv --python=your python version here

如果您想使用 mkvirtualenv 命令创建虚拟环境。

【讨论】:

我不使用 virtualenv。我使用'python3 -m venv'。【参考方案3】:

作为已接受答案的补充,请注意更改 venv 所在的目录名称会导致使用系统的默认 python 和 pip 路径,而不是使用 venv 路径。

【讨论】:

以上是关于Python venv(虚拟环境)使用了错误的 Python 版本的主要内容,如果未能解决你的问题,请参考以下文章

Python之虚拟环境venv实战详解

Python 3 使用venv创建虚拟环境

virtualenv 的使用简介

Python3 venv 创建虚拟环境

虚拟环境

虚拟环境