【问题标题】:pipenv requires python 3.7 but installed version is 3.8 and won't installpipenv 需要 python 3.7 但安装的版本是 3.8 并且不会安装
【发布时间】:2023-03-15 09:50:01
【问题描述】:

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

旧平台是 Windows 7,当前平台是 Windows 10。

当时我可能已经安装了 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.9 docker 镜像和 Pipenv 文件需要 Python 3.8 时。您可以根据需要更改其中任何一个以匹配。

标签: python python-3.x pipenv


【解决方案1】:
[requires]
python_version = "3.7"

和错误:

Warning: Python 3.7 was not found on your system…

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

【讨论】:

    【解决方案2】:

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

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

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

    另一个对你的问题没有真正意义的建议是,你应该看看诗歌来替换 pipenv(它更快,因为它以异步方式安装依赖项),诗歌网站是这个: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,但应该是这两者之一。

    【讨论】:

      【解决方案3】:

      如果您的 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...
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 呃,真的吗?我应该仅仅因为一个脚本而保留两个 Pyhton 安装吗?我希望不是这样,但有一个选项要求 Python >= 3.7(甚至 >= 3.x)
        • 是的,我需要用于 PyAudio 的 Python 3.6,但我使用的是 3.8,我安装了 3.6,现在我有两个版本)
        • 通过判断results of the further installation steps,我认为这是要走的路。
        • 大多数包管理(例如 pyenv 和 conda)可以处理在虚拟环境中有不同的 python 版本。这似乎不是最好的解决方案。
        【解决方案5】:

        简单的解决方案是,您可以避免此类问题,并使其成为完全系统可靠的 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 版本,这实在是太多了。请查看链接的问题:您会看到安装依赖项时需要确切的原始 Python 版本。
        【解决方案6】:

        我已安装 Python 3.9

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

        所以,我更改了 pipfile

        中的值
        [requires]
        python_version = "3.6"
        

        [requires]
        python_version = "*"
        

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-27
        • 2023-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多