pipenv 无法创建依赖情况应该怎么处理?大家有什么好的建议吗?

问题是这样的:

pipenv用着还是不错的,就是经常安装一些包老是解决不了依赖问题,比如最近我用到一个dogpile.cache,使用pipenv install dogpile.cache==0.7.1来安装就报错。

我看报错信息大概是无法创建依赖关系,但是通过pipenv graph却可以看到包有了,dogpile.cache依赖于decorator的关系图也有了,Pipfile文件也被写入了包的内容,但是Pipfile.lock是没有创建依赖的。

这导致我每次再安装其它包,它又要去更新一遍Pipfile.lock,因为dogpile.cache无法创建依赖,所以你每安装一次新的包它都要报错。

我的分析

  1. 从上面的情况我也总结出来pipenv graph好像和Pipfile.lock关系不大,Pipfile.lock文件没有依赖关系依然可以从pipenv graph看出依赖图来,当然你可以无视报错继续使用
  2. 可以把dogpile.cache的信息从Pipfile中删除,这样报错没有了,但是这不是好的解决方案吧,Pipfile文件就是维护包信息,一个还好,缺的多我还要手动处理
  3. 另外,官方是有--skip-lock命令在安装时跳过依赖的,我是这样用的pipenv install --skip-lock dogpile.cache==0.7.1,但是这个命令根本不管用,还是在安装完成包后,执行了Installing dependencies from Pipfile,下面是报错内容:
(flask_starlight)  liuzhi@localhost  ~/PycharmProjects/flask_starlight   master ●  pipenv install --skip-lock dogpile.cache==0.7.1
Installing dogpile.cache==0.7.1…
Adding dogpile.cache to Pipfile's [packages]…
✔ Installation Succeeded
Installing dependencies from Pipfile…
An error occurred while installing dogpile-cache==0.7.1! Will try again.
  ?   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 9/9 — 00:00:01
Installing initially failed dependencies…
[pipenv.exceptions.InstallError]:   File "/Users/liuzhi/anaconda3/lib/python3.6/site-packages/pipenv/core.py", line 1992, in do_install
[pipenv.exceptions.InstallError]:       skip_lock=skip_lock,
[pipenv.exceptions.InstallError]:   File "/Users/liuzhi/anaconda3/lib/python3.6/site-packages/pipenv/core.py", line 1253, in do_init
[pipenv.exceptions.InstallError]:       pypi_mirror=pypi_mirror,
[pipenv.exceptions.InstallError]:   File "/Users/liuzhi/anaconda3/lib/python3.6/site-packages/pipenv/core.py", line 859, in do_install_dependencies
[pipenv.exceptions.InstallError]:       retry_list, procs, failed_deps_queue, requirements_dir, **install_kwargs
[pipenv.exceptions.InstallError]:   File "/Users/liuzhi/anaconda3/lib/python3.6/site-packages/pipenv/core.py", line 763, in batch_install
[pipenv.exceptions.InstallError]:       _cleanup_procs(procs, not blocking, failed_deps_queue, retry=retry)
[pipenv.exceptions.InstallError]:   File "/Users/liuzhi/anaconda3/lib/python3.6/site-packages/pipenv/core.py", line 681, in _cleanup_procs
[pipenv.exceptions.InstallError]:       raise exceptions.InstallError(c.dep.name, extra=err_lines)
[pipenv.exceptions.InstallError]: ['Collecting dogpile-cache==0.7.1']
[pipenv.exceptions.InstallError]: ['Could not find a version that satisfies the requirement dogpile-cache==0.7.1 (from versions: )', 'No matching distribution found for dogpile-cache==0.7.1']
ERROR: ERROR: Package installation failed...
  ☤  ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/1 — 00:00:01

求问

这不就玩脱了吗,是我官方跳过依赖的命令使用错误吗?还是理解上不是这样的效果?目前我有两个选择,修改Pipfile,或者无视错误,不知道各位大佬是怎么使用pipenv的,因为无法解决依赖的包我遇到的太多了

慕盖茨4494581
浏览 1755回答 2
2回答

森栏

似乎没什么好的解决方法呢,如果你也遇到这样的问题,可以屏蔽对应的包就像我问题中的做法。感觉目前可用的方案是pipenv只用于创建虚拟环境,然后换成pip来安装和管理包

慕的地6264312

看下你默认的安装源是哪个,比如有些源,如豆瓣是没有该包的,自然你也安装不成功。可以通过其参数--pypi-mirror指定为其他的源再试一下
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python