Poetry 安装失败并出现 EnvCommandError:查找版本 2020.12.21.3-lambda,为什么?

con*_*xyz 8 python pip python-poetry

诗歌无法完成任何installadd不抛出EnvCommandError与无法找到一个setup.py“for”有关的事情soupsieve

\n

它查找版本“2020.12.21.3-lambda”,我不明白为什么它没有像其他依赖项一样使用普通版本从远程源加载依赖项。

\n
$ poetry update\nUpdating dependencies\nResolving dependencies... (54.1s)\n\nWriting lock file\n\nPackage operations: 59 installs, 0 updates, 0 removals\n\n  \xe2\x80\xa2 Installing soupsieve (2020.12.21.3-lambda): Failed\n\n  EnvCommandError\n\n  Command ['/home/git/my-project/.venv/bin/pip', 'install', '--no-deps', 'file:///home/Library/Caches/pypoetry/artifacts/22/36/ca/c8aae41f80011be881aa337cc80abc25ffd8542471c325e4410afa86c8/authorities-deployer-2020.12.21.3-lambda.zip'] errored with the following return code 1, and output: \n Looking in indexes: ... # censored proxy\n  Processing /home/Library/Caches/pypoetry/artifacts/22/36/ca/c8aae41f80011be881aa337cc80abc25ffd8542471c325e4410afa86c8/authorities-deployer-2020.12.21.3-lambda.zip\n      ERROR: Command errored out with exit status 1:\n       command: /home/git/my-package/my-package/.venv/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/q6/xjd92kc90zsds149_rx08cy40000gp/T/pip-req-build-40kngare/setup.py'"'"'; __file__='"'"'/private/var/folders/q6/xjd92kc90zsds149_rx08cy40000gp/T/pip-req-build-40kngare/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\\r\\n'"'"', '"'"'\\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/q6/xjd92kc90zsds149_rx08cy40000gp/T/pip-pip-egg-info-02b8jxuf\n           cwd: /private/var/folders/q6/xjd92kc90zsds149_rx08cy40000gp/T/pip-req-build-40kngare/\n      Complete output (5 lines):\n      Traceback (most recent call last):\n        File "<string>", line 1, in <module>\n        File "/usr/local/Cellar/python@3.9/3.9.0_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tokenize.py", line 392, in open\n          buffer = _builtin_open(filename, 'rb')\n      FileNotFoundError: [Errno 2] No such file or directory: '/private/var/folders/q6/xjd92kc90zsds149_rx08cy40000gp/T/pip-req-build-40kngare/setup.py'\n      ----------------------------------------\n  ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.\n  WARNING: You are using pip version 20.3.1; however, version 20.3.3 is available.\n  You should consider upgrading via the '/home/git/my-package/my-package/.venv/bin/python -m pip install --upgrade pip' command.\n  \n\n  at ~/.poetry/lib/poetry/utils/env.py:1074 in _run\n      1070\xe2\x94\x82                 output = subprocess.check_output(\n      1071\xe2\x94\x82                     cmd, stderr=subprocess.STDOUT, **kwargs\n      1072\xe2\x94\x82                 )\n      1073\xe2\x94\x82         except CalledProcessError as e:\n    \xe2\x86\x92 1074\xe2\x94\x82             raise EnvCommandError(e, input=input_)\n      1075\xe2\x94\x82 \n      1076\xe2\x94\x82         return decode(output)\n      1077\xe2\x94\x82 \n      1078\xe2\x94\x82     def execute(self, bin, *args, **kwargs):\n\n
Run Code Online (Sandbox Code Playgroud)\n

这个包已经工作了一段时间了。我不记得更改过任何内容pyproject.toml我尝试查看旧版本,pyproject.toml看看是否有什么意外改变。相同的结果。

\n

我还尝试删除.venv/诗歌创建并重新创建它。相同的结果。

\n

我不知道soupsieve依赖会从哪里来。它可以在诗歌创建的环境中使用普通的旧 pip 安装得很好。

\n
cd project/\npoetry shell\npip install soupsieve # Installs 2.1 without a problem\n
Run Code Online (Sandbox Code Playgroud)\n

Jon*_*han 7

我遇到了同样的错误,因为由于某种原因poetry install总是无法在%APPDATA%. 解决方案是将 venv 移至本地项目根目录。

poetry config virtualenvs.in-project true
poetry env remove python
poetry install
Run Code Online (Sandbox Code Playgroud)


con*_*xyz 2

快速解决

因此,根本问题与 无关poetry,但我至少能够通过显式添加特定版本的子依赖项来解决此问题。

pip add soupsieve==2.1
Run Code Online (Sandbox Code Playgroud)

根本问题

真正的问题是我们的系统通过一个私人工件存储库代理了所有内容,该存储库已被不良元数据毒害:它包含命名的东西,soupsieve但实际上并非如此soupsieve

一旦我们删除了这些东西,poetry就可以正常工作了。