poetry install fails on KeyError even for defined environment variables
See original GitHub issue- 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: Debian Linux 10 Buster
- Poetry version: 1.1.2
- Link of a Gist with the contents of your pyproject.toml file: https://gist.github.com/pepastach/85b133f035fbb805cacd4d0fd75562b1
Issue
We run poetry install --remove-untracked
and the process randomly fails on various βmissingβ environment variables. This has been reported in #3144 for the PATH
variable (which happens quite a lot, more than other variables), but I have seen it for many other variables (often GitLab or Docker related). In all cases they are defined.
It fails really randomly. Different dependencies being installed, different environment variables. Sometimes it does not fail (but most often it does).
Sometimes it fails on multiple environment variables. Like KeyError 'PATH'
, KeyError 'CI_JOB_STAGE'
or KeyError 'DOCKER_ENV_CI_DISPOSABLE_ENVIRONMENT'
in the same run. It seems to me like some kind of race condition in the parallel install. I canβt prove this hypothesis until we can disable parallel installation. I think itβs scheduled for an upcoming release.
Here is an example output where it fails on the PATH
variable.
Creating virtualenv bp-xxx-3RqKXHa2-py3.7 in /builds/xxx/.cache/poetry/pypoetry/virtualenvs
Installing dependencies from lock file
Package operations: 106 installs, 0 updates, 0 removals
β’ Installing attrs (20.2.0)
β’ Installing six (1.15.0)
β’ Installing cattrs (1.0.0)
...
Stack trace:
8 /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:199 in _execute_operation
197β
198β try:
β 199β result = self._do_execute_operation(operation)
200β except EnvCommandError as e:
201β if e.e.returncode == -2:
7 /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:273 in _do_execute_operation
271β return 0
272β
β 273β result = getattr(self, "_execute_{}".format(method))(operation)
274β
275β if result != 0:
6 /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:408 in _execute_install
406β
407β def _execute_install(self, operation): # type: (Install) -> None
β 408β return self._install(operation)
409β
410β def _execute_update(self, operation): # type: (Update) -> None
5 /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:446 in _install
444β args.insert(2, "-U")
445β
β 446β return self.run_pip(*args)
447β
448β def _update(self, operation):
4 /usr/local/lib/python3.7/site-packages/poetry/installation/executor.py:297 in run_pip
295β def run_pip(self, *args, **kwargs): # type: (...) -> int
296β try:
β 297β self._env.run_pip(*args, **kwargs)
298β except EnvCommandError as e:
299β output = decode(e.e.output)
3 /usr/local/lib/python3.7/site-packages/poetry/utils/env.py:916 in run_pip
914β pip = self.get_pip_command()
915β cmd = pip + list(args)
β 916β return self._run(cmd, **kwargs)
917β
918β def _run(self, cmd, **kwargs):
2 /usr/local/lib/python3.7/site-packages/poetry/utils/env.py:1183 in _run
1181β def _run(self, cmd, **kwargs):
1182β with self.temp_environ():
β 1183β os.environ["PATH"] = self._updated_path()
1184β os.environ["VIRTUAL_ENV"] = str(self._path)
1185β
1 /usr/local/lib/python3.7/site-packages/poetry/utils/env.py:1215 in _updated_path
1213β
1214β def _updated_path(self):
β 1215β return os.pathsep.join([str(self._bin_dir), os.environ["PATH"]])
1216β
1217β
KeyError
'PATH'
at /usr/local/lib/python3.7/os.py:681 in __getitem__
677β try:
678β value = self._data[self.encodekey(key)]
679β except KeyError:
680β # raise KeyError with the original key value
β 681β raise KeyError(key) from None
682β return self.decodevalue(value)
683β
684β def __setitem__(self, key, value):
685β key = self.encodekey(key)
β’ Installing pluggy (0.13.1)
β’ Installing py (1.9.0)
β’ Installing wcwidth (0.2.5)
β’ Installing yarl (1.6.0)
Issue Analytics
- State:
- Created 3 years ago
- Reactions:22
- Comments:33 (10 by maintainers)
I see this issue from time to time on our gitlab ci (kubernetes runner). I works pretty much all the time after a retry (so same environment, same container, same git commit)
Thatβs strange I got a similar error on gitlab CI (even though I donβt get the same locally, even using the gitlab-runner):
On the other hand, locally I have the environment variable defined:
The suggested fix did work for me too: