Repository navigation
Description
-
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 (
-vvvoption). -
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.
Activity
sinoroc commentedon Nov 7, 2020
The error message contains
/home/runner/.cache/pypoetry/artifacts/6c/0f/ea/fb7dbaaaac5e39918d0139753cfaeab4348e2b4f652e4c43e63e41db21/cchardet-2.1.7-cp38-cp38-manylinux2010_x86_64.whl. I would suspect there was an issue during the download of that file or while writing that file on disk.If this file is still on your local file system, would you mind trying to inspect it manually? For example verify the checksum, or since it should be just a simple zip file in disguise, try to open this archive with your usual favorite unzip program. Or maybe something like:
austinbutler commentedon Nov 8, 2020
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:
sinoroc commentedon Nov 8, 2020
I see. I do not know how to go on on from there then. My first impression is that it could have been a similar issue as this one (probably a download went wrong), but your issue seems to be different.
austinbutler commentedon Nov 9, 2020
To test that it works consistently with the parallel installer disabled, I disabled it in
poetry.toml, then ran five more builds in a row and they all worked.kleschenko commentedon Nov 11, 2020
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:
max-wittig commentedon Apr 30, 2021
I encounter the same issue, when running in CI. It's sporadic and seems to be related to the new installer.
dlouzan commentedon May 4, 2021
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:
fix(docker): Move install to last step
fix(docker): Move install to last step
nhopp commentedon Aug 17, 2021
I am seeing this issue using Poetry
1.1.7in docker with the proposed workarounderror installing
lietu commentedon Sep 8, 2021
I've also implemented the workaround in my base images and my issues with
AttributeError: module 'brotli' has no attribute 'error'are gone.https://github.com/lietu/docker-images/blob/98c1d3938e6f3d760e005f3c0e4cca0be9824d2e/python-base/ubuntu20.04-python3.9/docker/scripts/configure_poetry.sh#L8
brnosouza commentedon Jan 12, 2022
is this still valid?
max-wittig commentedon Jan 12, 2022
Yes, no new version was released to address this problem. In some repos:
poetry config experimental.new-installer falseis still required.benjaminsweetnam247 commentedon Feb 8, 2022
can we make the experimental not the default this has been driving me nuts for days thanks
abn commentedon Mar 23, 2022
See #3010 (comment) for a bit more context on the
FileNotFoundError. TL;DR this is a side-effect of running multiple pip instances (parallel install).Poetry
1.2should fare better as the newer pip releases are less prone to this and poetry will now use an embedded pip version instead of system one (which in the above case is likely older) andinstallwill not by default remove unused system packages.Also, you might have better results if you stop doing
poetry config virtualenvs.create false.trying to get rid of the brotli error on install
abn commentedon May 10, 2022
Can someone confirm that this is resolved with Poetry from poetry@master (or latest pre-release).
Alternatively, in environments where this is a risk, you cna also consider the mitigation.
lafrenierejm commentedon Jun 12, 2022
Anecdotally, I have never seen this error in Poetry 1.2.0b1 in the several weeks that my team at work has been using 1.2.0b1 both locally and in CI for multiple repos.
neersighted commentedon Sep 5, 2022
Not sure why this was re-opened, but I am closing it as there have been no consistent reproductions on 1.2.0 -- please open a new issue if you are able to reproduce installer issues with 1.2.0.
Clean up commented out code that is incompatible with poetry 1.5.0
Clean up commented out code that is incompatible with poetry 1.5.0 (#34)
github-actions commentedon Mar 1, 2024
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.