pipenv 需要 python 3.7 但安装的版本是 3.8 并且不会安装

pipenv requires python 3.7 but installed version is 3.8 and won't install

我知道一点 Python 一年多前我写了一个小脚本,使用 pipenv 来管理依赖关系。

旧平台为Windows7,当前平台为Windows10.

当时我可能安装了 Python 3.7,现在我安装了 3.8.3 但是 运行:

pipenv install

投诉:

Warning: Python 3.7 was not found on your system…
Neither 'pyenv' nor 'asdf' could be found to install Python.
You can specify specific versions of Python with:
$ pipenv --python path\to\python

这是 Pipfile

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
python-ldap = {path = "./dependencies/python_ldap-3.1.0-cp37-cp37m-win_amd64.whl"}
requests = "~=2.0"
mysqlclient = "~=1.0"

[dev-packages]

[requires]
python_version = "3.7"

我手动编辑了最后一行以允许 3.8,但我该如何正确修复它?
我认为 3.7 应该是最低要求 — 好吧,脚本非常简单,我认为即使是 3.0 也应该可以。

您可以从官方网站下载Python 3.7 - https://www.python.org/downloads/

[requires]
python_version = "3.7"

和错误:

Warning: Python 3.7 was not found on your system…

pipenv 已安装的一些提示,但当它读取您的配置文件时,它发现它应该使用 python 3.7 创建环境,因此,从逻辑上讲,您应该安装 3.7 更新 pipfile 以使用您安装的 python ?

简单的解决方案是,您可以避免此类问题并使其成为完全系统可靠的 python 版本。要做到这一点,只需从 requires.

中删除 python_version = "3.7" 行
[[source]]
url = "https://pypi.org/simple"
verify_ssl = false
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.7"

所以在删除 python 版本后,你的 pipfile 会像,

[[source]]
url = "https://pypi.org/simple"
verify_ssl = false
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "*"

我安装了 Python 3.9

pipenv 需要 Python 3.6,如 pipfile 中所述。

所以,我更改了 pipfile

中的值
[requires]
python_version = "3.6"

[requires]
python_version = "*"

所以它可以在任何版本上工作。

我建议您安装 pyenv(这样它可以管理您的 Python 版本)。

pyenv 的仓库是这个: https://github.com/pyenv/pyenv

安装 pyenv 后,当 Pipfile 需要一个 Python 版本,而您的计算机上没有它时,它会询问您是否要使用 pyenv 安装它。 通过这种方式,您将能够在具有不同 python 版本的项目中工作,而不必担心项目使用的是哪个版本。 使用 pyenv,您也可以在全局 shell 中的 python 版本之间轻松切换。

另一个与你的问题不太相关的建议是,你应该看看 poetry 来代替 pipenv(它更快,因为它以异步方式安装依赖项),poetry 的网站是这个:https://python-poetry.org/

但是,您仍然需要 pyenv 之类的东西或手动安装另一个 python 版本来解决您的问题。

如果你只是想让 Pipfile 允许你使用更新版本的 python 我想你可以这样改变它:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
python-ldap = {path = "./dependencies/python_ldap-3.1.0-cp37-cp37m-win_amd64.whl"}
requests = "~=2.0"
mysqlclient = "~=1.0"

[dev-packages]

[requires]
python_version = "^3.7"

我不确定语法是 ^3.7 还是 >=3.7 但应该是这两者之一。

如果您的 python 命令是 Python 2.x,但是您有一个运行 Python 3.x 的 python3 命令,那么您可能只需要使用 --python 选项来告诉 pipenv 使用它:

$ pipenv install
Warning: Python >= 3.5 was not found on your system...
Neither 'pyenv' nor 'asdf' could be found to install Python.
You can specify specific versions of Python with:
$ pipenv --python path/to/python

$ pipenv --python `which python3` install
Creating a virtualenv for this project...

安装相关版本

如何查看Python版本

cmd 任意目录>Python -v

在我的情况下,他们需要 Python 3.8.2 但是我安装了 Python 3.8.0 版本 由于这个我无法克服这个错误

一旦我安装了正确的版本,我就可以运行命令