Pipenv/Pipfile锁依赖项问题

2024-10-02 22:25:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下文件:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
pytest = "*"
pytest-cov = "*"
black = "*"

[packages]
boto3 = "*"
awscli = "*"
pandas = "*"
setuptools-scm = "*"
dask = {extras = ["dataframe"], version = "*"}
fastparquet = "*"
s3fs = "*"


[requires]
python_version = "3.7"

[pipenv]
allow_prereleases = true

当我尝试在boto3和s3fs中的子依赖项(即botocore)之间使用pipenv锁(创建pipfile锁)时,问题就出现了。错误如下所示:

[pipenv.exceptions.ResolutionFailure]: Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  First try clearing your dependency cache with $ pipenv lock --clear, then try the original command again.
 Alternatively, you can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
  Hint: try $ pipenv lock --pre if it is a pre-release dependency.
ERROR: Could not find a version that matches botocore
There are incompatible versions in the resolved dependencies:
  botocore<1.17.45,>=1.17.44 (from aiobotocore==1.1.2->s3fs==0.5.1->-r /var/folders/1p/55zf00x17kv1bw300f79xsnr0000gn/T/pipenvvslkzte6requirements/pipenv-r37de33l-constraints.txt (line 6))
  botocore<1.20.0,>=1.19.18 (from boto3==1.16.18->-r /var/folders/1p/55zf00x17kv1bw300f79xsnr0000gn/T/pipenvvslkzte6requirements/pipenv-r37de33l-constraints.txt (line 8))
  botocore<2.0a.0,>=1.12.36 (from s3transfer==0.3.3->boto3==1.16.18->-r /var/folders/1p/55zf00x17kv1bw300f79xsnr0000gn/T/pipenvvslkzte6requirements/pipenv-r37de33l-constraints.txt (line 8))
  botocore==1.19.18 (from awscli==1.18.178->-r /var/folders/1p/55zf00x17kv1bw300f79xsnr0000gn/T/pipenvvslkzte6requirements/pipenv-r37de33l-constraints.txt (line 13))

这是我的pipenv图:

boto3==1.16.18
  - botocore [required: >=1.19.18,<1.20.0, installed: 1.19.18]
    - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
    - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
      - six [required: >=1.5, installed: 1.15.0]
    - urllib3 [required: >=1.25.4,<1.27, installed: 1.25.11]
  - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
  - s3transfer [required: >=0.3.0,<0.4.0, installed: 0.3.3]
    - botocore [required: >=1.12.36,<2.0a.0, installed: 1.19.18]
      - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
      - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.15.0]
      - urllib3 [required: >=1.25.4,<1.27, installed: 1.25.11]
dask==2.30.0
  - pyyaml [required: Any, installed: 5.3.1]
docutils==0.15.2
fastparquet==0.4.1
  - numba [required: >=0.28, installed: 0.52.0rc2]
    - llvmlite [required: >=0.35.0.dev0,<0.36, installed: 0.35.0rc2]
    - numpy [required: >=1.15, installed: 1.19.4]
    - setuptools [required: Any, installed: 49.2.1]
  - numpy [required: >=1.11, installed: 1.19.4]
  - packaging [required: Any, installed: 20.4]
    - pyparsing [required: >=2.0.2, installed: 3.0.0b1]
    - six [required: Any, installed: 1.15.0]
  - pandas [required: >=0.19, installed: 1.1.4]
    - numpy [required: >=1.15.4, installed: 1.19.4]
    - python-dateutil [required: >=2.7.3, installed: 2.8.1]
      - six [required: >=1.5, installed: 1.15.0]
    - pytz [required: >=2017.2, installed: 2020.4]
  - six [required: Any, installed: 1.15.0]
  - thrift [required: >=0.11.0, installed: 0.13.0]
    - six [required: >=1.7.2, installed: 1.15.0]
partd==1.1.0
  - locket [required: Any, installed: 0.2.0]
  - toolz [required: Any, installed: 0.11.1]
s3fs==0.5.1
  - aiobotocore [required: >=1.0.1, installed: 1.1.2]
    - aiohttp [required: >=3.3.1, installed: 4.0.0a1]
      - async-timeout [required: >=3.0,<4.0, installed: 3.0.1]
      - attrs [required: >=17.3.0, installed: 20.3.0]
      - chardet [required: >=2.0,<4.0, installed: 3.0.4]
      - multidict [required: >=4.5,<5.0, installed: 4.7.6]
      - typing-extensions [required: >=3.6.5, installed: 3.7.4.3]
      - yarl [required: >=1.0,<2.0, installed: 1.6.2]
        - idna [required: >=2.0, installed: 2.10]
        - multidict [required: >=4.0, installed: 4.7.6]
        - typing-extensions [required: >=3.7.4, installed: 3.7.4.3]
    - aioitertools [required: >=0.5.1, installed: 0.7.1]
      - typing-extensions [required: >=3.7, installed: 3.7.4.3]
    - botocore [required: >=1.17.44,<1.17.45, installed: 1.19.18]
      - jmespath [required: >=0.7.1,<1.0.0, installed: 0.10.0]
      - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.15.0]
      - urllib3 [required: >=1.25.4,<1.27, installed: 1.25.11]
    - wrapt [required: >=1.10.10, installed: 1.12.1]
  - fsspec [required: >=0.8.0, installed: 0.8.4]
setuptools-scm==4.1.2
  - setuptools [required: Any, installed: 49.2.1]

综上所述,aiobotocore似乎特别需要botocore 1.17.44,但boto3中的botocore至少需要1.19.18。解决这个问题的最好方法是什么,这样我就可以使用这些软件包而不必经历依赖性挂断


Tags: installedfromvarpipenvrequiredanyboto3setuptools