pip install -r requirements.txt 与引用另一个 git+https 的 git+https 失败

问题描述 投票:0回答:0

如果

requirements.txt
通过
git+https
包含私人回购包,并且该包裹包含一个
git+https
到另一个私人回购包,则第二个
git+https
无法识别。

这是我在

pip3 install -r requirements.txt
项目中运行
Client
时的错误:

Expected end or semicolon (after name and no valid version specifier)

完整错误:

Resolved https://x-token-auth:****@bitbucket.org/name/library1.git
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error
  
  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [66 lines of output]
      /private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/config/pyprojecttoml.py:66: _BetaConfiguration: Support for `[tool.setuptools]` in `pyproject.toml` is still *beta*.
        config = read_configuration(filepath, True, ignore_option_errors, dist)
      /private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/config/expand.py:132: SetuptoolsWarning: File '/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-req-build-2kfhkxk4/README.md' cannot be found
        return '\n'.join(
      Traceback (most recent call last):
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/_vendor/packaging/requirements.py", line 35, in __init__
          parsed = parse_requirement(requirement_string)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/_vendor/packaging/_parser.py", line 64, in parse_requirement
          return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/_vendor/packaging/_parser.py", line 82, in _parse_requirement
          url, specifier, marker = _parse_requirement_details(tokenizer)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/_vendor/packaging/_parser.py", line 126, in _parse_requirement_details
          marker = _parse_requirement_marker(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/_vendor/packaging/_parser.py", line 147, in _parse_requirement_marker
          tokenizer.raise_syntax_error(
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/_vendor/packaging/_tokenizer.py", line 163, in raise_syntax_error
          raise ParserSyntaxError(
      setuptools.extern.packaging._tokenizer.ParserSyntaxError: Expected end or semicolon (after name and no valid version specifier)
          git+https://x-token-auth:****@bitbucket.org/name/library2.git
             ^
      
      The above exception was the direct cause of the following exception:
      
      Traceback (most recent call last):
        File "/Users/username/src/testnestedreq/client/venv/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/Users/username/src/testnestedreq/client/venv/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/username/src/testnestedreq/client/venv/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
                 ^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 323, in _get_build_requires
          self.run_setup()
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 338, in run_setup
          exec(code, locals())
        File "<string>", line 4, in <module>
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/__init__.py", line 107, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 159, in setup
          dist.parse_config_files()
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 908, in parse_config_files
          pyprojecttoml.apply_configuration(self, filename, ignore_option_errors)
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/config/pyprojecttoml.py", line 67, in apply_configuration
          return _apply(dist, config, filepath)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py", line 49, in apply
          dist._finalize_requires()
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 607, in _finalize_requires
          self._move_install_requirements_markers()
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 647, in _move_install_requirements_markers
          inst_reqs = list(_reqs.parse(spec_inst_reqs))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/r3/g2zzxbp952qcpf7z4tlzrsvc0000gn/T/pip-build-env-yejy0smn/overlay/lib/python3.11/site-packages/setuptools/_vendor/packaging/requirements.py", line 37, in __init__
          raise InvalidRequirement(str(e)) from e
      setuptools.extern.packaging.requirements.InvalidRequirement: Expected end or semicolon (after name and no valid version specifier)
          git+https://x-token-auth:****@bitbucket.org/name/library2.git
             ^
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

为了演示这个问题,我有 3 个项目:

  1. Client
    :包括对
    Library1
  2. 的依赖
  3. Library1
    :包括对
    Library2
  4. 的依赖
  5. Library2
    :做东西

Client
requirements.txt

python-dotenv==1.0.0
git+https://x-token-auth:****@bitbucket.org/name/library1.git@main

Library1
requirements.txt

python-dotenv==1.0.0
git+https://x-token-auth:****@bitbucket.org/name/library2.git@main

Library2 requirements.txt

python-dotenv==1.0.0

环境:

  1. Mac Ventura 13.2,M1 芯片
  2. 蟒蛇 3.11.1
  3. 点 23.1.2
  4. 设置工具 65.5.0
  5. 通过
    python3 -m venv venv
    source venv/bin/activate
  6. 使用虚拟环境

试过这些东西:

  1. 如果我从
    pip3 install -r requirements.txt
    项目运行
    Library1
    ,那么它工作正常。
  2. 如果我从
    Library2
    中删除
    Library1
    依赖然后它通过错误(但我不能使用
    Library2
  3. 如果我直接将
    Library2
    添加到
    Client
    requirements.txt
    那么一切都很好。但这并不理想,因为它需要
    Client
    明确知道
    Library1
    的依赖关系

我怎样才能让这个场景起作用?

python python-3.x pip
© www.soinside.com 2019 - 2024. All rights reserved.