poetry: Running poetry install fails sometimes with new-installer
-
I am on the latest Poetry version.
-
I have searched the issues of this repo and believe that this is not a duplicate.
-
If an exception occurs when executing a command, I executed it again in debug mode (
-vvv
option). -
OS version and name: Ubuntu 18.04.5 and Alpine 3.12
-
Poetry version: 1.1.4
-
Link of a Gist with the contents of your pyproject.toml file: https://github.com/austinbutler/poetry-test/runs/1366900719?check_suite_focus=true#step:5:289
Issue
At random, poetry install
will fail with the following error. The package being installed by pip changes, but the brotli
error doesn’t change.
EnvCommandError
Command ['/home/runner/work/poetry-test/poetry-test/.venv/bin/pip', 'install', '--no-deps', '/home/runner/.cache/pypoetry/artifacts/6c/0f/ea/fb7dbaaaac5e39918d0139753cfaeab4348e2b4f652e4c43e63e41db21/cchardet-2.1.7-cp38-cp38-manylinux2010_x86_64.whl'] errored with the following return code 1, and output:
Traceback (most recent call last):
File "/home/runner/work/poetry-test/poetry-test/.venv/bin/pip", line 8, in <module>
sys.exit(main())
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_internal/cli/main.py", line 73, in main
command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 104, in create_command
module = importlib.import_module(module_path)
File "/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 17, in <module>
from pip._internal.cli.req_command import RequirementCommand, with_cleanup
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 16, in <module>
from pip._internal.index.collector import LinkCollector
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_internal/index/collector.py", line 14, in <module>
from pip._vendor import html5lib, requests
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_vendor/requests/__init__.py", line 43, in <module>
from pip._vendor import urllib3
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_vendor/urllib3/__init__.py", line 7, in <module>
from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_vendor/urllib3/connectionpool.py", line 39, in <module>
from .response import HTTPResponse
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_vendor/urllib3/response.py", line 156, in <module>
class HTTPResponse(io.IOBase):
File "/home/runner/work/poetry-test/poetry-test/.venv/lib/python3.8/site-packages/pip/_vendor/urllib3/response.py", line 389, in HTTPResponse
DECODER_ERROR_CLASSES += (brotli.error,)
AttributeError: module 'brotli' has no attribute 'error'
at ~/.poetry/lib/poetry/utils/env.py:1074 in _run
1070│ output = subprocess.check_output(
1071│ cmd, stderr=subprocess.STDOUT, **kwargs
1072│ )
1073│ except CalledProcessError as e:
→ 1074│ raise EnvCommandError(e, input=input_)
1075│
1076│ return decode(output)
1077│
1078│ def execute(self, bin, *args, **kwargs):
So far it doesn’t seem to happen from a normal interactive shell on macOS, but that could just be random luck. However CI at work in Jenkins has been flaky and even local builds in Docker show the same issue.
What seems to fix it is setting new-installer = false
.
I realize there are already a few issues opened that are possibly similar (related to race conditions and parallel installs), but I was able to replicate it in an example GitHub action so figured maybe that could help.
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 14
- Comments: 17 (4 by maintainers)
Commits related to this issue
- fix(docker): Move install to last step ------------ The Problems ------------ There are namely two problems which are being fixed in this issue: 1. `pyproject.toml` defines `modmail` package to be i... — committed to discord-modmail/modmail by Shivansh-007 3 years ago
- fix(docker): Move install to last step ------------ The Problems ------------ There are namely two problems which are being fixed in this issue: 1. `pyproject.toml` defines `modmail` package to be i... — committed to discord-modmail/modmail by Shivansh-007 3 years ago
- trying to get rid of the brotli error on install Bug in Poetry: https://github.com/python-poetry/poetry/issues/3336 — committed to juniorguru/junior.guru by honzajavorek 2 years ago
- Clean up commented out code that is incompatible with poetry 1.5.0 I believe the commented out code was related to this: https://github.com/python-poetry/poetry/issues/3336#issuecomment-831789763 T... — committed to ioxiocom/docker-images by joakimnordling a year ago
- Clean up commented out code that is incompatible with poetry 1.5.0 (#34) I believe the commented out code was related to this: https://github.com/python-poetry/poetry/issues/3336#issuecomment-8317897... — committed to ioxiocom/docker-images by joakimnordling a year ago
We’ve encountered this also running our builds on gitlab-ci, randomly builds will fail, not only running directly on the runner docker executor, also inside kaniko builds. The only solution has been to disable the new installer as documented above:
can we make the experimental not the default this has been driving me nuts for days thanks
I am seeing this issue using Poetry
1.1.7
in docker with the proposed workarounderror installing
We are also getting a lot of flakiness using the new installer in our CI builds. For example, those are errors from the three consecutive retries of the same build:
Added a step to the CI to upload the artifacts on failure and that worked for getting a copy on another failed run.
Failure this time was on
CairoSVG-2.4.2-py3-none-any.whl
.The sha256 from PyPi is
9cb1df7e9bc60f75fb87f67940a8fb805aad544337a67a40b67c05cfe33711a2
.The sha256 of the file from the artifacts on that build matches PyPi: