问题是这样的:
pipenv用着还是不错的,就是经常安装一些包老是解决不了依赖问题,比如最近我用到一个dogpile.cache,使用pipenv install dogpile.cache==0.7.1来安装就报错。
我看报错信息大概是无法创建依赖关系,但是通过pipenv graph却可以看到包有了,dogpile.cache依赖于decorator的关系图也有了,Pipfile文件也被写入了包的内容,但是Pipfile.lock是没有创建依赖的。
这导致我每次再安装其它包,它又要去更新一遍Pipfile.lock,因为dogpile.cache无法创建依赖,所以你每安装一次新的包它都要报错。
我的分析
从上面的情况我也总结出来pipenv graph好像和Pipfile.lock关系不大,Pipfile.lock文件没有依赖关系依然可以从pipenv graph看出依赖图来,当然你可以无视报错继续使用
可以把dogpile.cache的信息从Pipfile中删除,这样报错没有了,但是这不是好的解决方案吧,Pipfile文件就是维护包信息,一个还好,缺的多我还要手动处理
另外,官方是有--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的,因为无法解决依赖的包我遇到的太多了
2 回答
森栏
TA贡献1810条经验 获得超5个赞
似乎没什么好的解决方法呢,如果你也遇到这样的问题,可以屏蔽对应的包就像我问题中的做法。感觉目前可用的方案是pipenv只用于创建虚拟环境,然后换成pip来安装和管理包
慕的地6264312
TA贡献1817条经验 获得超6个赞
看下你默认的安装源是哪个,比如有些源,如豆瓣是没有该包的,自然你也安装不成功。可以通过其参数--pypi-mirror
指定为其他的源再试一下
添加回答
举报
0/150
提交
取消