Поэзия не использует правильную версию Python - PullRequest
3 голосов
/ 19 января 2020

Я недавно установил Pyenv и Poetry и хочу создать новый проект Python 3.8. Я установил global и local версии python на 3.8.1, используя соответствующие команды Pyenv (например, pyenv global 3.8.1). Когда я запускаю pyenv version в моем терминале, вывод будет 3.8.1., как и ожидалось.

Теперь проблема в том, что когда я создаю новый проект python с Poetry (poetry new my-project), сгенерированный * Файл 1010 * создает проект с python 2.7:

[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["user <user@email.com>"]

[tool.poetry.dependencies]
python = "^2.7"

[tool.poetry.dev-dependencies]
pytest = "^4.6"

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

Кажется, что Poetry по умолчанию возвращается к системной версии Python. Как мне изменить это так, чтобы он использовал версию, установленную с Pyenv?

Редактировать

Я использую MacOS, которая поставляется в комплекте с Python 2.7. Я думаю, что это может быть причиной некоторых проблем здесь. Я переустановил Python 3.8 снова с Pyenv, но когда я нажал Poetry install, я получаю следующую ошибку:

The currently activated Python version 2.7.16 is not supported by the project (^3.8).
Trying to find and use a compatible version.

[NoCompatiblePythonVersionFound]
Poetry was unable to find a compatible version. If you have one, you can explicitly use it via the "env use" command. 

Должен ли я явно создать среду для проекта с использованием Pyenv или проект должен быть в состоянии получить доступ к правильной версии Python после запуска pyenv local 3.8.1.? Когда я делаю последнее, ничего не меняется, и я все равно получаю те же ошибки.

Ответы [ 2 ]

1 голос
/ 19 января 2020

Хорошо, я понял проблему. Немного смущающе, я не запускал pyenv shell 3.8.1 перед выполнением других команд. Теперь все работает. Спасибо всем за ваши усилия.

1 голос
/ 19 января 2020

pyproject.toml используется для определения всех зависимостей для вашего проекта, включая поддерживаемую python версию.

В строке, на которую вы жалуетесь, просто говорится, что версии python поддерживаются проектом python2 .7 или выше, это не зависит от того, какие версии python вы установили с помощью pyenv.

python = "^2.7"

Если вы хотите обновить версии python, поддерживаемые проектом Вы можете редактировать файл напрямую и запустить poetry update.


Если вы хотите использовать несколько версий python, вам нужно убедиться, что поэзия использует правильные зависимости для версии python, которую вы используете. Чтобы изменить спецификацию c версии, которую использует поэзия, вы должны использовать poetry env,

  • poetry env list показать версии python, поэзия может использовать
  • poetry env use <python> переключатели поэзия, чтобы использовать эту версию.

Например, на моей машине в поэзии установлено 3 виртуальных среды и используется среда, связанная с python3 .6:

↪ poetry env list
sipy-a9sqc5pb-py3.6 (Activated)
sipy-a9sqc5pb-py3.7
sipy-a9sqc5pb-py3.8

Я не уверен, как эти виртуальные окружения с взаимодействием с shivs, используемыми pyenv, но их документы имеют раздел, относящийся к нему

Управление виртуальными средами

Есть плагин pyenv с именем pyenv-virtualenv, который поставляется с различными функциями, помогающими пользователям pyenv управлять виртуальными средами, созданными virtualenv или Anaconda. Поскольку сценарий активации этих виртуальных сред полагается на переменную $ PATH интерактивной оболочки пользователя, он будет перехватывать хуки выполнения команды в стиле shim в pyenv. Мы также рекомендуем установить pyenv-virtualenv, если вы планируете поиграть с этими виртуальными средами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...