python-poetry / poetry

Python packaging and dependency management made easy
https://python-poetry.org
MIT License
31.14k stars 2.25k forks source link

Poetry installed on Python 3.8 cannot install Python 3.7 venv #9702

Open alienorlgrst opened 2 hours ago

alienorlgrst commented 2 hours ago

Description

Poetry installed using python 3.8 cannot install a python 3.7 virtual environment.

  - Installing six (1.16.0): Failed

  CalledProcessError

  Command '['/home/a.lougerstay/git/opdata-monorepo/scripts/copy-to-s3/.venv/bin/python', '-I', '-W', 'ignore', '-c', '\nimport importlib.util\nimport json\nimport sys\n\nfrom pathlib import Path\n\nspec = importlib.util.spec_from_file_location(\n    "packaging", Path(r"/home/a.lougerstay/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/packaging/__init__.py")\n)\npackaging = importlib.util.module_from_spec(spec)\nsys.modules[spec.name] = packaging\n\nspec = importlib.util.spec_from_file_location(\n    "packaging.tags", Path(r"/home/a.lougerstay/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/packaging/tags.py")\n)\npackaging_tags = importlib.util.module_from_spec(spec)\nspec.loader.exec_module(packaging_tags)\n\nprint(\n    json.dumps([(t.interpreter, t.abi, t.platform) for t in packaging_tags.sys_tags()])\n)\n']' returned non-zero exit status 1.

And several other errors in the logs below.

The only project dependencies are botocore and boto3. Project was intialized with poetry init.

Workarounds

Not using Poetry

Poetry Installation Method

pipx

Operating System

Ubuntu

Poetry Version

1.8.3

Poetry Configuration

>>> poetry config --list
cache-dir = "/home/user/.cache/pypoetry"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/user/.cache/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

Python Sysconfig

No response

Example pyproject.toml

[tool.poetry]
name = "project"
version = "0.1.0"
description = ""
authors = ["user"]
readme = "README.md"

[tool.poetry.dependencies]
python = "~3.7"
boto3 = "*"
botocore = "*"

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

Poetry Runtime Logs

>>> poetry install -vvv
Loading configuration file /home/user/.config/pypoetry/config.toml
Using virtualenv: /home/user/git/opdata-monorepo/scripts/project/.venv
Installing dependencies from lock file

Finding the necessary packages for the current system

Package operations: 7 installs, 0 updates, 0 removals

  - Installing six (1.16.0): Pending...
Checking if keyring is available
[keyring:keyring.backend] Loading KWallet
[keyring:keyring.backend] Loading SecretService
[keyring:keyring.backend] Loading Windows
[keyring:keyring.backend] Loading chainer
[keyring:keyring.backend] Loading libsecret
[keyring:keyring.backend] Loading macOS
Using keyring backend 'SecretService Keyring'
Accessing keyring https://pypi.org/simple/ failed
Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 48, in send_and_get_reply
    raise DBusErrorResponse(resp_msg)
jeepney.wrappers.DBusErrorResponse: [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 177, in get_default_collection
    return Collection(connection)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 45, in __init__
    self._collection.get_property('Label')
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 67, in get_property
    (signature, value), = self.send_and_get_reply(msg)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 52, in send_and_get_reply
    raise ItemNotFoundException('Item does not exist!') from resp
secretstorage.exceptions.ItemNotFoundException: Item does not exist!

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 61, in get_preferred_collection
    collection = secretstorage.get_default_collection(bus)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 179, in get_default_collection
    return create_collection(connection, 'Default', 'default', session)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 159, in create_collection
    raise PromptDismissedException('Prompt dismissed.')
secretstorage.exceptions.PromptDismissedException: Prompt dismissed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/password_manager.py", line 48, in get_credential
    credential = keyring.get_credential(name, username)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/core.py", line 73, in get_credential
    return get_keyring().get_credential(service_name, username)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 112, in get_credential
    collection = self.get_preferred_collection()
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 63, in get_preferred_collection
    raise InitError("Failed to create the collection: %s." % e)
keyring.errors.InitError: Failed to create the collection: Prompt dismissed..
Accessing keyring pypi.org failed
Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 48, in send_and_get_reply
    raise DBusErrorResponse(resp_msg)
jeepney.wrappers.DBusErrorResponse: [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 177, in get_default_collection
    return Collection(connection)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 45, in __init__
    self._collection.get_property('Label')
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 67, in get_property
    (signature, value), = self.send_and_get_reply(msg)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 52, in send_and_get_reply
    raise ItemNotFoundException('Item does not exist!') from resp
secretstorage.exceptions.ItemNotFoundException: Item does not exist!

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 61, in get_preferred_collection
    collection = secretstorage.get_default_collection(bus)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 179, in get_default_collection
    return create_collection(connection, 'Default', 'default', session)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 159, in create_collection
    raise PromptDismissedException('Prompt dismissed.')
secretstorage.exceptions.PromptDismissedException: Prompt dismissed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/password_manager.py", line 48, in get_credential
    credential = keyring.get_credential(name, username)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/core.py", line 73, in get_credential
    return get_keyring().get_credential(service_name, username)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 112, in get_credential
    collection = self.get_preferred_collection()
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 63, in get_preferred_collection
    raise InitError("Failed to create the collection: %s." % e)
keyring.errors.InitError: Failed to create the collection: Prompt dismissed..
Accessing keyring https://pypi.org/pypi/six/1.16.0/json failed
Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 48, in send_and_get_reply
    raise DBusErrorResponse(resp_msg)
jeepney.wrappers.DBusErrorResponse: [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 177, in get_default_collection
    return Collection(connection)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 45, in __init__
    self._collection.get_property('Label')
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 67, in get_property
    (signature, value), = self.send_and_get_reply(msg)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 52, in send_and_get_reply
    raise ItemNotFoundException('Item does not exist!') from resp
secretstorage.exceptions.ItemNotFoundException: Item does not exist!

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 61, in get_preferred_collection
    collection = secretstorage.get_default_collection(bus)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 179, in get_default_collection
    return create_collection(connection, 'Default', 'default', session)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 159, in create_collection
    raise PromptDismissedException('Prompt dismissed.')
secretstorage.exceptions.PromptDismissedException: Prompt dismissed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/password_manager.py", line 48, in get_credential
    credential = keyring.get_credential(name, username)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/core.py", line 73, in get_credential
    return get_keyring().get_credential(service_name, username)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 112, in get_credential
    collection = self.get_preferred_collection()
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 63, in get_preferred_collection
    raise InitError("Failed to create the collection: %s." % e)
keyring.errors.InitError: Failed to create the collection: Prompt dismissed..
Accessing keyring pypi.org failed
Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 48, in send_and_get_reply
    raise DBusErrorResponse(resp_msg)
jeepney.wrappers.DBusErrorResponse: [org.freedesktop.DBus.Error.UnknownMethod] ('No such interface “org.freedesktop.DBus.Properties” on object at path /org/freedesktop/secrets/collection/login',)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 177, in get_default_collection
    return Collection(connection)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 45, in __init__
    self._collection.get_property('Label')
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 67, in get_property
    (signature, value), = self.send_and_get_reply(msg)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/util.py", line 52, in send_and_get_reply
    raise ItemNotFoundException('Item does not exist!') from resp
secretstorage.exceptions.ItemNotFoundException: Item does not exist!

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 61, in get_preferred_collection
    collection = secretstorage.get_default_collection(bus)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 179, in get_default_collection
    return create_collection(connection, 'Default', 'default', session)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/secretstorage/collection.py", line 159, in create_collection
    raise PromptDismissedException('Prompt dismissed.')
secretstorage.exceptions.PromptDismissedException: Prompt dismissed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/password_manager.py", line 48, in get_credential
    credential = keyring.get_credential(name, username)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/core.py", line 73, in get_credential
    return get_keyring().get_credential(service_name, username)
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 112, in get_credential
    collection = self.get_preferred_collection()
  File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/keyring/backends/SecretService.py", line 63, in get_preferred_collection
    raise InitError("Failed to create the collection: %s." % e)
keyring.errors.InitError: Failed to create the collection: Prompt dismissed..
Creating new session for pypi.org
  - Installing six (1.16.0): Failed

  Stack trace:

  2  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/env/base_env.py:338 in _run
      336│                 output = ""
      337│             else:
    → 338│                 output = subprocess.check_output(
      339│                     cmd, stderr=stderr, env=env, text=True, **kwargs
      340│                 )

  1  /usr/lib/python3.8/subprocess.py:415 in check_output
       413│         kwargs['input'] = empty
       414│ 
    →  415│     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
       416│                **kwargs).stdout
       417│ 

  CalledProcessError

  Command '['/home/user/git/opdata-monorepo/scripts/project/.venv/bin/python', '-I', '-W', 'ignore', '-c', '\nimport importlib.util\nimport json\nimport sys\n\nfrom pathlib import Path\n\nspec = importlib.util.spec_from_file_location(\n    "packaging", Path(r"/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/packaging/__init__.py")\n)\npackaging = importlib.util.module_from_spec(spec)\nsys.modules[spec.name] = packaging\n\nspec = importlib.util.spec_from_file_location(\n    "packaging.tags", Path(r"/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/packaging/tags.py")\n)\npackaging_tags = importlib.util.module_from_spec(spec)\nspec.loader.exec_module(packaging_tags)\n\nprint(\n    json.dumps([(t.interpreter, t.abi, t.platform) for t in packaging_tags.sys_tags()])\n)\n']' returned non-zero exit status 1.

  at /usr/lib/python3.8/subprocess.py:516 in run
       512│             # We don't call process.wait() as .__exit__ does that for us.
       513│             raise
       514│         retcode = process.poll()
       515│         if check and retcode:
    →  516│             raise CalledProcessError(retcode, process.args,
       517│                                      output=stdout, stderr=stderr)
       518│     return CompletedProcess(process.args, retcode, stdout, stderr)
       519│ 
       520│ 

The following error occurred when trying to handle this error:

  Stack trace:

  12  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/installation/executor.py:285 in _execute_operation
       283│ 
       284│             try:
     → 285│                 result = self._do_execute_operation(operation)
       286│             except EnvCommandError as e:
       287│                 if e.e.returncode == -2:

  11  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/installation/executor.py:395 in _do_execute_operation
       393│             return 0
       394│ 
     → 395│         result: int = getattr(self, f"_execute_{method}")(operation)
       396│ 
       397│         if result != 0:

  10  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/installation/executor.py:520 in _execute_install
       518│ 
       519│     def _execute_install(self, operation: Install | Update) -> int:
     → 520│         status_code = self._install(operation)
       521│ 
       522│         self._save_url_reference(operation)

   9  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/installation/executor.py:558 in _install
       556│             archive = self._download_link(operation, Link(package.source_url))
       557│         else:
     → 558│             archive = self._download(operation)
       559│ 
       560│         operation_message = self.get_operation_message(operation)

   8  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/installation/executor.py:736 in _download
       734│ 
       735│     def _download(self, operation: Install | Update) -> Path:
     → 736│         link = self._chooser.choose_for(operation.package)
       737│ 
       738│         if link.yanked:

   7  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/installation/chooser.py:59 in choose_for
        57│                     continue
        58│ 
     →  59│                 if not Wheel(link.filename).is_supported_by_environment(self._env):
        60│                     logger.debug(
        61│                         "Skipping wheel %s as this is not supported by the current"

   6  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/wheel.py:47 in is_supported_by_environment
        45│ 
        46│     def is_supported_by_environment(self, env: Env) -> bool:
     →  47│         return bool(set(env.supported_tags).intersection(self.tags))
        48│ 

   5  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/env/base_env.py:248 in supported_tags
       246│     def supported_tags(self) -> list[Tag]:
       247│         if self._supported_tags is None:
     → 248│             self._supported_tags = self.get_supported_tags()
       249│ 
       250│         return self._supported_tags

   4  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/env/virtual_env.py:64 in get_supported_tags
        62│ 
        63│     def get_supported_tags(self) -> list[Tag]:
     →  64│         output = self.run_python_script(GET_SYS_TAGS)
        65│ 
        66│         return [Tag(*t) for t in json.loads(output)]

   3  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/env/base_env.py:313 in run_python_script
       311│ 
       312│     def run_python_script(self, content: str, **kwargs: Any) -> str:
     → 313│         return self.run(
       314│             self._executable,
       315│             "-I",

   2  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/env/base_env.py:305 in run
       303│     def run(self, bin: str, *args: str, **kwargs: Any) -> str:
       304│         cmd = self.get_command_from_bin(bin) + list(args)
     → 305│         return self._run(cmd, **kwargs)
       306│ 
       307│     def run_pip(self, *args: str, **kwargs: Any) -> str:

   1  ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/env/virtual_env.py:88 in _run
        86│     def _run(self, cmd: list[str], **kwargs: Any) -> str:
        87│         kwargs["env"] = self.get_temp_environ(environ=kwargs.get("env"))
     →  88│         return super()._run(cmd, **kwargs)
        89│ 
        90│     def get_temp_environ(

  EnvCommandError

  Command ['/home/user/git/opdata-monorepo/scripts/project/.venv/bin/python', '-I', '-W', 'ignore', '-c', '\nimport importlib.util\nimport json\nimport sys\n\nfrom pathlib import Path\n\nspec = importlib.util.spec_from_file_location(\n    "packaging", Path(r"/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/packaging/__init__.py")\n)\npackaging = importlib.util.module_from_spec(spec)\nsys.modules[spec.name] = packaging\n\nspec = importlib.util.spec_from_file_location(\n    "packaging.tags", Path(r"/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/packaging/tags.py")\n)\npackaging_tags = importlib.util.module_from_spec(spec)\nspec.loader.exec_module(packaging_tags)\n\nprint(\n    json.dumps([(t.interpreter, t.abi, t.platform) for t in packaging_tags.sys_tags()])\n)\n'] errored with the following return code 1

  Error output:
  Traceback (most recent call last):
    File "<string>", line 18, in <module>
    File "<frozen importlib._bootstrap_external>", line 728, in exec_module
    File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
    File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/packaging/tags.py", line 23, in <module>
      from . import _manylinux, _musllinux
    File "/home/user/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/packaging/_manylinux.py", line 172, in <module>
      @functools.lru_cache
    File "/usr/lib/python3.7/functools.py", line 490, in lru_cache
      raise TypeError('Expected maxsize to be an integer or None')
  TypeError: Expected maxsize to be an integer or None

  at ~/.local/share/pipx/venvs/poetry/lib/python3.8/site-packages/poetry/utils/env/base_env.py:342 in _run
      338│                 output = subprocess.check_output(
      339│                     cmd, stderr=stderr, env=env, text=True, **kwargs
      340│                 )
      341│         except CalledProcessError as e:
    → 342│             raise EnvCommandError(e)
      343│ 
      344│         return output
      345│ 
      346│     def execute(self, bin: str, *args: str, **kwargs: Any) -> int:

Cannot install six.
dimbleby commented 2 hours ago

Duplicate #9515 please close