有人能给我解释一下这里发生了什么吗?
我在试着让碧昂夫和诗歌在一起很好。我在一个Ubuntu 20.04
的AWS实例上,它安装了python 3.8.10
。(我已经从系统中删除了所有python2的痕迹)。我想使用python 3.10,但我不能只是升级到那个(非常感谢Amazon)。所以输入pyenv
。
我使用poetry new
命令创建了一个空项目,下面是pyproject.toml
文件。
[tool.poetry]
name = "test"
version = "0.1.0"
description = ""
authors = ["ken <crowmagnumb@gmail.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
我通过pyenv安装了3.10.7。如果我运行poetry run python --version
,就会得到以下输出。
The currently activated Python version 3.8.10 is not supported by the project (^3.10).
Trying to find and use a compatible version.
Using python3 (3.10.7)
Python 3.8.10
它找到并“使用”3.10.7,然后报告3.8.10?哈?
如果我运行poetry env use 3.10
,然后再试一次,我会.
Current Python version (3.8.10) is not allowed by the project (^3.10).
Please change python executable via the "env use" command.
..。而且它无法完全运行,即没有从python命令中报告的版本。我现在的python版本仍然是3.8.10。如果我直接在命令行运行python --version
(而不是通过诗歌),我就得到了3.10.7
。这里发生什么事情?!
作为检查,如果我运行poetry env use system
,那么我确实回到了我的第一个问题。:(
发布于 2022-12-01 08:41:32
诗歌不能为你处理Python的依赖性。也就是说,它不能为您安装正确的Python版本;它只能为您正确地处理Python包依赖关系。但是它将检查正确的Python版本。
由于诗歌本身依赖于Python,而且在本例中它是一个比所需的版本(3.10)更旧的版本(3.8),因此它可能会被混淆,并且无法使用这个存储库:诗歌不知道您的Python 3.10!(或者至少,避免猜测。)错误信息可能会更清楚(例如,“does安装在PythonVersion3.8中,但是这个项目需要3.10。请为一个工作版本3.10安装诗歌”),但是错误确实提示了这个问题。
为正确的Python版本(这里是Pyenv 3.10 )安装诗歌,并使用它。
注意:当您使用poetry new
或poetry init
启动一个项目时,诗歌将默认为其默认的Python作为主要依赖项。因此,最初,pyproject.toml
文件中的Python依赖项为3.8。然后,您可能会自己将其更改为3.10。这是可以接受的,但诗歌并不知道这一点(事实上,它不能改变Python依赖版本)。如果您直接从Pyenv的3.10开始,比方说,使用python -m poetry init
,就可以了。
附加备注:关于诗歌的GitHub的许多问题表明,这可以以某种方式工作(人们遇到这种错误消息并使用Pyenv的问题很多,但响应表明这是可行的),所以试试在那里搜索吧。
实际上,对于测试来说,能够使用Python3.10和3.11进行测试是非常有意义的。虽然诗歌只会安装在3.10,3.11也应该是工作。根据这里的猜测,不同之处在于,您使用的是3.11 (因此使用了Poetry env),但是只使用3.11进行测试,为该测试运行一些版本的python3.11 -m pip install .
。这将首先为3.11下载诗歌,然后构建项目的其余部分,并在临时目录中运行测试。这与你目前正在做的事情不同(考虑到这个问题)。
发布于 2022-12-01 08:51:52
您已经安装了python 3.10,但是python的系统版本仍然存在。现在要做的是切换您刚刚安装的python版本。你可以跑
pyenv global 3.10
--这将切换到您刚刚安装的3.10版本,之后您可以运行您的诗歌命令,并且它将工作,因为您的pyproject.toml
指定您需要使用python3.10
将来,如果您需要使用另一个版本的python,请使用pyenv install 3.x
安装它,并使用pyenv global 3.x
进行切换。
如果您在工作目录中,并且不想使该版本成为全局python版本,也可以使用local
而不是global
。
https://stackoverflow.com/questions/74635227
复制相似问题