<p>pipenv 安装速度很慢</p>

创建于 2017-05-15  ·  107评论  ·  资料来源: pypa/pipenv

在带有 SSD 的 Windows 10 机器上,更改一个依赖项后运行pipenv install对我来说大约需要 5 分钟。

大部分时间都花在Locking [packages] dependencies...

在这一步中似乎可能存在一些二次或更糟的复杂性?

我已经在下面包含了我们的大部分 pipfile,但是我不得不删除一些我们的私有 repo 依赖项:

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

[packages]
alembic = "==0.8.4"
amqp = "==1.4.7"
analytics-python = "==1.2.5"
anyjson = "==0.3.3"
billiard = "==3.3.0.20"
braintree = "==3.20.0"
celery = "==3.1.18"
coverage = "==4.0.3"
docopt = "==0.4.0"
eventlet = "==0.19.0"
flake8 = "==3.0.4"
Flask-Cors = "==2.1.2"
Flask-Login = "==0.3.2"
Flask = "==0.12.1"
funcsigs = "==0.4"
fuzzywuzzy = "==0.12.0"
gcloud = "==0.14.0"
html2text = "==2016.9.19"
itsdangerous = "==0.24"
Jinja2 = "==2.8"
jsonpatch = "==1.15"
jsonschema = "==2.5.1"
PyJWT = "==1.4.2"
kombu = "==3.0.30"
LayerClient = "==0.1.9"
MarkupSafe = "==0.23"
mixpanel = "==4.3.0"
mock = "==1.3.0"
nose-exclude = "==0.4.1"
nose = "==1.3.7"
numpy = "==1.12.1"
pdfrw = "==0.3"
Pillow = "==4.1.0"
pusher = "==1.6"
pycountry = "==1.20"
pycryptodome = "==3.4.5"
pymongo = "==3.2"
PyMySQL = "==0.7.4"
python-dateutil = "<=2.5.1"
python-Levenshtein = "==0.12.0"
python-magic = "==0.4.6"
python-coveralls = "==2.9.0"
pytz = "==2015.6"
raygun4py = "==3.1.2"
"repoze.retry" = "==1.3"
requests = "==2.8.1"
sendgrid = "==2.2.1"
slacker = "==0.7.3"
SQLAlchemy-Enum34 = "==1.0.1"
SQLAlchemy-Utils = "==0.31.6"
SQLAlchemy = "==1.1.9"
typing = "==3.5.2.2"
twilio = "==5.6.0"
Unidecode = "==0.4.19"
voluptuous = "==0.8.11"
Wand = "==0.4.4"
watchdog = "==0.8.3"
Werkzeug = "==0.12.1"
wheel = "==0.24.0"
WTForms = "==2.0.2"
xmltodict = "==0.9.2"
zeep = "==0.24.0"

最有用的评论

为什么这个话题的所有问题都关闭了? 由于锁步挂起,我无法安装任何东西。

所有107条评论

嘿再次@Diggsey ,这是由于我们现在编写更改的方式。 我已经准备好合并这些更改,但它们正在破坏projects.py API,因此我们将推迟到下一个主要版本。 希望我们能在接下来的几周内做好准备。 我将暂时保留此问题以跟踪问题。

我们在 PyCon 上一起冲刺。 很快就会更快。

现在对我来说它并不慢,它很冷......

20 分钟后, pipenv install my_package或简单的pipenv install不会给我任何输出。

编辑:确认,几个小时后仍然没有。 是不是同样的问题? 通常它很慢,但在 5 到 10 分钟后结束。

@NicolasWebDev ,你使用的是什么版本的 pipenv? 您的系统上是否还单独安装了delegator.py ? 如果是这样,那是什么版本? 这是一个应该在 v3.6.0 中解决的问题。

如果以上所有内容都是最新的,您能否提供您的 Pipfile 的内容? 谢谢!

@nateprewitt ,你是对的,我在 v3.5.x 上。 更新到 4.1.1 解决了冻结问题。 现在仍然需要5分钟,但至少它是可用的!

抱歉打扰了,我总是忘记通过 pip 安装的软件包不会自动更新。
谢谢!

很高兴你解决了@NicolasWebDev 的问题! 我们正在努力加快速度,希望 #373 将在下一个版本中更近一步。

@Diggsey @NicolasWebDev ,我刚刚发布了 4.1.2,应该添加了这些速度改进。 这里还有一些工作要做,但这至少会加快 pipenv 的初始引导时间。

@nateprewitt感谢更新,pipenv 现在对我来说似乎更快了,但运行pipenv lock仍然需要几分钟,即使没有任何改变 - 它仍然在Locking [packages] dependencies...等待巨大大部分时间。

@Diggsey ,很多时候是因为您正在下载该 Pipfile 中的大量文件。 似乎您也在固定所有依赖项。 您是直接将所有这些导入到您的项目中,还是其他一些依赖项要求?

@nateprewitt我们可以删除其中的一些,但大多数是直接依赖项 - 为什么每次生成锁定文件时都需要下载所有依赖项?

我们需要确定它作为依赖项安装的所有内容。 为了做到这一点,我们下载每个包并确定锁定时安装的样子。 这使我们可以适当地固定 Pipfile.lock 中的所有内容。 如果不下载,就没有可靠的方法来检查子依赖项和解析范围依赖项声明。

鉴于大多数包会随着时间的推移保持不变,是否可以缓存下载的包?

@Diggsey想为我们调查一下吗?

这可能是一个愚蠢的问题,但 Pip 不是已经做了包缓存吗?

我的印象是确实如此。

pipenv 可以使用 pip 缓存系统还是必须从头开始实现?

Pipenv 只是运行 pip,所以应该自动使用缓存。

固定的! 锁现在快坏了。

哦谢谢。 我认为这是唯一阻止我在工作中将每个人都推向 pipenv 的事情。

哇,太好了,这对我来说确实是 100 倍以上的加速,而且它还发现了以前版本没有发现的依赖冲突!

有用的是pipenv lockverbose标志 - 我只能通过编辑piptools/logging.py以启用详细日志记录来诊断依赖冲突,但是一旦我这样做了,它就给出了非常清楚地表明正在发生的事情。

我可能遗漏了一些东西:) 它在哪里修复? 最新版本是 4 天前,所以我从master安装了最新版本。 但是, pipenv install仍然很慢。

我试过:

  • 以花哨的方式安装pipenv ⚡️ 🍰 ⚡️
  • 使用这两种最新发布版本pipenv从和最新版本的master
  • 安装单个包

使用最新的稳定版本(5.3.5.),安装一个包需要 3:40:

∙ time pipenv install --dev raven
Installing raven...
Collecting raven
  Using cached raven-6.1.0-py2.py3-none-any.whl
Collecting contextlib2 (from raven)
  Using cached contextlib2-0.5.5-py2.py3-none-any.whl
Installing collected packages: contextlib2, raven
Successfully installed contextlib2-0.5.5 raven-6.1.0

Adding raven to Pipfile's [dev-packages]...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock!
pipenv install --dev raven  10,11s user 2,77s system 5% cpu 3:40,04 total

使用master ,它仍然挂起(一个包,+10 分钟)

编辑:它刚刚完成:

pipenv install graphene_django  8,03s user 1,28s system 1% cpu 11:23,11 total

有任何想法吗? 非常感谢!

有时依赖项需要一段时间才能安装,特别是如果它们有 c 编译。 想分享你的Pipfile吗?

我知道有时这需要一段时间,但从一开始就很慢。 只是好奇这是否是我身边的问题。

这是我的 Pipfile:

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

[dev-packages]
pytest = "*"
pytest-django = "*"
pytest-testmon = "*"
pytest-watch = "*"
django-debug-toolbar = "*"
raven = "*"

[packages]
dj-database-url = "*"
Django = "*"
djangorestframework = "*"
gunicorn = "*"
newrelic = "*"
psycopg2 = "*"
requests = "*"
whitenoise = "*"
graphene-django = "*"

psycopg2 可能需要一段时间,因为它可能是从源代码编译的。 其他一切都应该又好又快。 尝试删除它,看看你的速度增加了多少。

$ pipenv install raven对我来说只花了 1 秒。

$ pipenv install raven 对我来说只花了 1 秒。

这就是我所期望的! 我可以以某种方式打开详细输出吗?

我尝试删除psycopg2 ,但影响不大。 运行pipenv install raven挂起一段时间。

我有:

  • Python 3.6.2
  • macOS 10.12.6

我看不出为什么乌鸦不应该是瞬时的。

$ pip install raven$ pipenv shell ,并告诉我,如果它的速度慢也有。

pipenv 所做的只是运行 pip,所以这实际上是“详细模式”

那是即时的:

∙ time pip install raven                                                                                                                                 19:38  tricoder<strong i="6">@issac</strong>
Requirement already satisfied: raven in /Users/tricoder/.envs/lingui-api-VE1OToiy/lib/python3.6/site-packages
Requirement already satisfied: contextlib2 in /Users/tricoder/.envs/lingui-api-VE1OToiy/lib/python3.6/site-packages (from raven)
noglob pip install raven  0,54s user 0,15s system 76% cpu 0,900 total

运行pipenv挂起大约 2-3 分钟(在pipenv shell内部/外部)。

∙ time pipenv install raven                                                                                                                              19:39  tricoder<strong i="12">@issac</strong>
Installing raven...
Requirement already satisfied: raven in /Users/tricoder/.envs/lingui-api-VE1OToiy/lib/python3.6/site-packages
Requirement already satisfied: contextlib2 in /Users/tricoder/.envs/lingui-api-VE1OToiy/lib/python3.6/site-packages (from raven)

Adding raven to Pipfile's [packages]...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock!
pipenv install raven  4,49s user 0,46s system 2% cpu 3:21,17 total

@Diggsey你能打开一个关于--verbose的新问题,并提供一个你希望它看起来像什么的例子吗?

@tricoder42是锁定步骤还是安装步骤的缓慢部分? 在最新版本中,锁定得到了极大的改进。

```外壳
$ time pipenv install raven
安装乌鸦...
收集乌鸦
使用缓存的 raven-6.1.0-py2.py3-none-any.whl
已满足要求:/Users/kennethreitz/.local/share/virtualenvs/pipenv-u9yqWeFK/lib/python3.6/site-packages 中的 contextlib2(来自 raven)
安装收集的包:raven
成功安装raven-6.1.0

将 raven 添加到 Pipfile 的 [包]...
锁定 [dev-packages] 依赖项...
锁定 [包] 依赖项...
更新了 Pipfile.lock!
9.30 真实 5.49 用户 0.42 系统

就像 50:50 我正在安装:锁定

@tricoder42 ,您使用的是最新版本吗?

让我用你的确切 pipfile 复制。

大概吧:

∙ pipenv --version                                                                                                                                       19:42  tricoder<strong i="6">@issac</strong>
pipenv, version 5.3.5
∙ pipsi upgrade git+https://github.com/kennethreitz/pipenv.git#egg=pipenv                                                                                19:45  tricoder<strong i="9">@issac</strong>
Collecting pipenv from git+https://github.com/kennethreitz/pipenv.git#egg=pipenv
  Cloning https://github.com/kennethreitz/pipenv.git to /private/var/folders/g9/1wbckv154mbby3tm411z_m340000gn/T/pip-build-se4ao5/pipenv
...
Installing collected packages: pipenv
  Found existing installation: pipenv 5.3.5
    Uninstalling pipenv-5.3.5:
      Successfully uninstalled pipenv-5.3.5
  Running setup.py install for pipenv ... done
Successfully installed pipenv-5.3.5

```外壳
$ 时间 pipenv 安装
没有提供包,安装所有依赖项。
Pipfile 位于 /Users/kennethreitz/pipenv/testapp/Pipfile。 考虑到这是项目的家。
未找到 Pipfile.lock,正在创建...
锁定 [dev-packages] 依赖项...
锁定 [包] 依赖项...
更新了 Pipfile.lock!
从 Pipfile.lock 安装依赖项...
[=================================] 22/22 - 00:00:37
58.94 真实 40.51 用户 8.62 系统

即使我将第一个软件包安装到全新的 pipenv 中也是如此。 我会尝试创建pipenv --three而不是pipenv --python python3.6

@tricoder42想在一个小时内加入 Google 视频群聊?

或者,如果您使用 Messages.app,我们可以使用 Apple 屏幕共享。

加我! 我是[email protected]

我即将加入一个会议,但在那之后我将有空。

凉爽的! 我会尝试从头开始清理并重新安装所有内容,我们会看到的。 我一小时后有空

太棒了——到时候我们会弄清楚的。 在messages.app上加我:)

如果有人在使用v11.9.0遇到了极其缓慢的Locking行为,我发现降级到v9.0.0需要将 5m30s 安装到 1m36s。

@ryantuck我建议如果您要固定旧版本以固定9.0.3但您会失去大量额外的安全性以提高速度,您不妨使用--skip-lock at那一点

--skip-lock确实加快了速度。 我走这条路是因为pipenv install --system --python=3.6实际上并没有安装到正确的系统 python,而且我假设我需要在尝试系统安装之前生成Pipfile.lock 。 它仍然没有用,所以我回到使用常规的旧pip ,但如果我在这些方面取得任何进展,我会在这个线程上发表评论。

—system—python是互斥的——后一个选项总是需要一个 virtualenv

是的,锁定对我来说也需要一段时间。 v11.10.0。 WSL 上的 Ubuntu。

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

[packages]
babel = "==2.5.3"
"boto3" = "==1.7.3"
colorama = "==0.3.9"
coreapi = "==2.3.3"
dj-database-url = "==0.5.0"
djangorestframework = "==3.7.7"
django-axes = "==4.0.2"
django-clever-selects = "==0.8.2"
django-crispy-forms = "==1.7.2"
django-choices = "==1.6.0"
django-extra-views = "==0.10.0"
django-filter = "==1.1.0"
django-hijack = "==2.1.7"
django-hijack-admin = "==2.1.7"
django-js-reverse = "==0.8.1"
django-model-utils = "==3.1.1"
django-phonenumber-field = "==2.0.0"
django-polymorphic = "==2.0.2"
django-redis-cache = "==1.7.1"
django-role-permissions = "==2.2.0"
"django-s3direct" = "==1.0.4"
django-static-precompiler = {extras = ["libsass"], version = "==1.8.2"}
django-storages = "==1.6.6"
"django-tables2" = "==1.21.2"
django-webpack-loader = "==0.6.0"
django-widget-tweaks = "==1.4.2"
facebookads = "==2.11.4"
googleads = "==11.0.1"
markdown = "==2.6.11"
phonenumbers = "==8.9.3"
pillow = "==5.1.0"
"psycopg2-binary" = "==2.7.4"
pygments = "==2.2.0"
pyssim = "==0.4"
python-dotenv = "==0.8.2"
pytz = "==2018.4"
raven = "==6.6.0"
sendgrid-django = "==4.2.0"
slacker = "==0.9.65"
termcolor = "==1.1.0"
tqdm = "==4.21.0"
twitter-ads = "==3.0.0"
brotlipy = "==0.7.0"
waitress = "==1.1.0"
whitenoise = "==3.3.1"
Django = "==2.0.4"

[dev-packages]
coverage = "==4.5.1"
selenium = "==3.11.0"
tblib = "==1.3.2"
"flake8" = "==3.5.0"
django-debug-toolbar = "==1.9.1"
django-extensions = "==2.0.6"

[requires]
python_version = "3.6"
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (7a535c)!
Installing dependencies from Pipfile.lock (7a535c)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 92/92 — 00:01:01

real    8m1.993s
user    5m32.406s
sys     7m15.203s

第二次或第三次应该会快一点,因为
缓存寿。 你看到改进了吗?
2018 年 4 月 12 日星期四上午 10:23 亚历山大·卡瓦诺 <
通知@github.com> 写道:

是的,锁定对我来说也需要一段时间。 v11.10.0。 WSL 上的 Ubuntu。

[[来源]]url = " https://pypi.python.org/simple "verify_ssl = truename = "pypi"
[包]babel = "==2.5.3""boto3" = "==1.7.3"colorama = "==0.3.9"coreapi = "==2.3.3"dj-database-url = "== 0.5.0"djangorestframework = "==3.7.7"django-axes = "==4.0.2"django-clever-selects = "==0.8.2"django-crispy-forms = "==1.7.2" django-choices = "==1.6.0"django-extra-views = "==0.10.0"django-filter = "==1.1.0"django-hijack = "==2.1.7"django-hijack- admin = "==2.1.7"django-js-reverse = "==0.8.1"django-model-utils = "==3.1.1"django-phonenumber-field = "==2.0.0"django-多态 = "==2.0.2"django-redis-cache = "==1.7.1"django-role-permissions = "==2.2.0""django-s3direct" = "==1.0.4"django-静态预编译器 = {extras = ["libsass"],版本 = "==1.8.2"}django-storages = "==1.6.6""django-tables2" = "==1.21.2"django-webpack -loader = "==0.6.0"django-widget-tweaks = "==1.4.2"facebookads = "==2.11.4"googleads = "==11.0.1"markdown = "==2.6.11" phonenumbers = "==8.9.3"pillow = "==5.1.0""psycopg2-binary" = "==2.7.4"pygments = "==2.2.0"pyssim = "==0.4"python-dotenv =“==0.8.2”pytz =“==2018.4”乌鸦 = "==6.6.0"sendgrid-django = "==4.2.0"slacker = "==0.9.65"termcolor = "==1.1.0"tqdm = "==4.21.0"twitter-ads = "==3.0.0"brotlipy = "==0.7.0"女服务员 = "==1.1.0"whitenoise = "==3.3.1"Django = "==2.0.4"
[开发包]coverage = "==4.5.1"selenium = "==3.11.0"tblib = "==1.3.2""flake8" = "==3.5.0"django-debug-toolbar = " ==1.9.1"django 扩展 ="==2.0.6"
[要求]python_version = "3.6"

未找到 Pipfile.lock,正在创建...
锁定 [dev-packages] 依赖项…
锁定 [包] 依赖项……
更新了 Pipfile.lock (7a535c)!
从 Pipfile.lock (7a535c) 安装依赖项...
🐍▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 92/92 — 00:01:01

真正的 8m1.993s
用户 5m32.406s
系统 7m15.203s


您收到此消息是因为您订阅了此线程。
直接回复此邮件,在 GitHub 上查看
https://github.com/pypa/pipenv/issues/356#issuecomment-380882203或静音
线程
https://github.com/notifications/unsubscribe-auth/ABhjqwIPyHtX0NTVoV1UPYR7HcwYm-2kks5tn42SgaJpZM4NbeoN
.

在那之前我已经安装了这些软件包; 我刚刚删除了锁定文件并再次运行安装。 我会再做一次以获得另一个数据点

@jtratner哇。 超级有趣......是什么导致缓存仅在第三次+之后才开始?

Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (7a535c)!
Installing dependencies from Pipfile.lock (7a535c)…
An error occurred while installing coreapi==2.3.3! Will try again.
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 92/92 — 00:00:58
Installing initially–failed dependencies…
Success installing coreapi==2.3.3!▉▉▉ 0/1 — 00:00:00
  ☤  ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 1/1 — 00:00:01

real    2m50.218s
user    2m19.438s
sys     5m44.797s
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (7a535c)!
Installing dependencies from Pipfile.lock (7a535c)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 92/92 — 00:00:55

real    2m32.042s
user    2m6.516s
sys     5m10.219s

@kavdev @jtratner 还引入了缓存哈希的功能,因此应该会做出相当大的改进

我在这里... 15 分钟后

@giantas没有帮助。 请在 pip install 中提供 pipfile、输出和持续时间。 还有你是否可以做单独的包裹。

在我的机器上运行需要很多时间。 macOS 10.13.4,pipenv,版本 11.10.0

下载几乎立即运行,但随后卡在Locking [packages] dependencies… 。 两个依赖项需要半分钟,另外 3 个依赖项需要 6 分钟,如果我将项目的所有依赖项都扔给它,它只会在锁定步骤中无限期挂起

pablo<strong i="8">@batman</strong> scanr (develop) $ time pipenv install flask flask_pymongo
Installing flask…
Looking in indexes: https://pypi.python.org/simple
Collecting flask
  Using cached https://files.pythonhosted.org/packages/77/32/e3597cb19ffffe724ad4bf0beca4153419918e7fa4ba6a34b04ee4da3371/Flask-0.12.2-py2.py3-none-any.whl
Collecting Werkzeug>=0.7 (from flask)
  Using cached https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl
Collecting itsdangerous>=0.21 (from flask)
Collecting Jinja2>=2.4 (from flask)
  Using cached https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl
Collecting click>=2.0 (from flask)
  Using cached https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->flask)
Installing collected packages: Werkzeug, itsdangerous, MarkupSafe, Jinja2, click, flask
Successfully installed Jinja2-2.10 MarkupSafe-1.0 Werkzeug-0.14.1 click-6.7 flask-0.12.2 itsdangerous-0.24

Adding flask to Pipfile's [packages]…
Installing flask_pymongo…
Looking in indexes: https://pypi.python.org/simple
Collecting flask_pymongo
  Using cached https://files.pythonhosted.org/packages/fa/71/ab920741dedd605ef4adbd57d0c7d9f43a6b6fe4068604fffbc6f64b2c9c/Flask_PyMongo-0.5.1-py3-none-any.whl
Requirement already satisfied: Flask>=0.8 in /Users/pablo/.local/share/virtualenvs/scanr-2m6AW0PB/lib/python3.6/site-packages (from flask_pymongo) (0.12.2)
Collecting PyMongo>=2.5 (from flask_pymongo)
  Using cached https://files.pythonhosted.org/packages/5c/7f/1f7240883ec3fa768d7e066c9cbd42ceb42d699ba1a0fb9d231c098a542d/pymongo-3.6.1-cp36-cp36m-macosx_10_6_intel.whl
Requirement already satisfied: click>=2.0 in /Users/pablo/.local/share/virtualenvs/scanr-2m6AW0PB/lib/python3.6/site-packages (from Flask>=0.8->flask_pymongo) (6.7)
Requirement already satisfied: itsdangerous>=0.21 in /Users/pablo/.local/share/virtualenvs/scanr-2m6AW0PB/lib/python3.6/site-packages (from Flask>=0.8->flask_pymongo) (0.24)
Requirement already satisfied: Werkzeug>=0.7 in /Users/pablo/.local/share/virtualenvs/scanr-2m6AW0PB/lib/python3.6/site-packages (from Flask>=0.8->flask_pymongo) (0.14.1)
Requirement already satisfied: Jinja2>=2.4 in /Users/pablo/.local/share/virtualenvs/scanr-2m6AW0PB/lib/python3.6/site-packages (from Flask>=0.8->flask_pymongo) (2.10)
Requirement already satisfied: MarkupSafe>=0.23 in /Users/pablo/.local/share/virtualenvs/scanr-2m6AW0PB/lib/python3.6/site-packages (from Jinja2>=2.4->Flask>=0.8->flask_pymongo) (1.0)
Installing collected packages: PyMongo, flask-pymongo
Successfully installed PyMongo-3.6.1 flask-pymongo-0.5.1

Adding flask_pymongo to Pipfile's [packages]…
Pipfile.lock (c202d3) out of date, updating to (3068be)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (3068be)!
Installing dependencies from Pipfile.lock (3068be)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 32/32 — 00:00:03
To activate this project's virtualenv, run the following:
 $ pipenv shell

real    0m37.816s
user    0m34.556s
sys 0m4.517s
pablo<strong i="5">@batman</strong> scanr (develop) $ time pipenv install gunicorn h5py joblib
Installing gunicorn…
Looking in indexes: https://pypi.python.org/simple
Collecting gunicorn
  Using cached https://files.pythonhosted.org/packages/64/32/becbd4089a4c06f0f9f538a76e9fe0b19a08f010bcb47dcdbfbc640cdf7d/gunicorn-19.7.1-py2.py3-none-any.whl
Installing collected packages: gunicorn
Successfully installed gunicorn-19.7.1

Adding gunicorn to Pipfile's [packages]…
Installing h5py…
Looking in indexes: https://pypi.python.org/simple
Collecting h5py
  Using cached https://files.pythonhosted.org/packages/69/d5/dff2a8f7658fd87ab3330a0ab47e4363681d8bdf734a495add65a347f5e3/h5py-2.7.1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Requirement already satisfied: six in /Users/pablo/.local/share/virtualenvs/scanr-2m6AW0PB/lib/python3.6/site-packages (from h5py) (1.11.0)
Collecting numpy>=1.7 (from h5py)
  Using cached https://files.pythonhosted.org/packages/a0/df/fa637677800e6702a57ef09e1d62e42aec3f598fb235f897155d146f2f59/numpy-1.14.2-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Installing collected packages: numpy, h5py
Successfully installed h5py-2.7.1 numpy-1.14.2

Adding h5py to Pipfile's [packages]…
Installing joblib…
Looking in indexes: https://pypi.python.org/simple
Collecting joblib
  Using cached https://files.pythonhosted.org/packages/4f/51/870b2ec270fc29c5d89f85353da420606a9cb39fba4747127e7c7d7eb25d/joblib-0.11-py2.py3-none-any.whl
Installing collected packages: joblib
Successfully installed joblib-0.11

Adding joblib to Pipfile's [packages]…
Pipfile.lock (0d514f) out of date, updating to (a4d15f)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (a4d15f)!
Installing dependencies from Pipfile.lock (a4d15f)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 36/36 — 00:00:03
To activate this project's virtualenv, run the following:
 $ pipenv shell

real    6m31.572s
user    1m1.986s
sys 0m11.047s

@pablote太慢了! 请注意,这部分是由于安装了 numpy,我确信我们可能会从源代码编译到 lock 或一些愚蠢的东西。 如果我们在这里提供有用的输出会有所帮助

我能做些什么吗? 或者我只是在使用 pipenv 并有这些缓慢的锁定文件时间时运气不好? 我想我可以 --skip-lock 但我有点想要那个功能

@pablote你能检查一下你是否重新运行相同的锁定操作,它仍然很慢吗?

如果我重新运行它几乎立即完成,所以我想这只是第一次添加一些新的依赖项。

所以它实际上是在本地缓存哈希,所以无论出于何种原因,这里的哈希生成过程都非常慢......

让我知道我是否可以提供任何信息来帮助诊断。 目前,我将回到 pip + virtualenv + pip-tools :/

@pablote一旦你有了哈希值,再次锁定就不会那么慢了

请提供有用的输出。 我刚刚将我的 pipenv 从 9.1.0 升级到 11.10.0 以解决包锁定步骤中的 Invalid Marker 故障,例如 #1622 --- 现在,我有一个带有 ipykernel、pandas、jupyter、numpy 的 pipfile,和 matplotlib 在那里,我最近尝试使用pipenv install来获取锁定文件,我已经坐在locking [packages] dependencies…超过 10 分钟。

因为没有输出,所以我不知道是否有实际发生的事情(比如从源代码构建 numpy)或者它是否只是挂起。 我能做的最好的事情就是斜视top并得出结论,也许它正在做某事,因为 python 进程似乎在徘徊......但我将不得不丢弃这个 virtualenv 并重新开始,如果有些东西不会很快移动。

如果需要,我很乐意为此做出一些贡献。

请提供有用的输出。 我刚刚将我的 pipenv 从 9.1.0 升级到 11.10.0 以解决包锁定步骤中的 Invalid Marker 故障,例如 #1622 --- 现在,我有一个带有 ipykernel、pandas、jupyter、numpy 的 pipfile,和 matplotlib 在那里,我最近尝试使用 pipenv install 来获取锁定文件,我一直在锁定 [packages] 依赖项……超过 10 分钟。

完全可以理解的抱怨,我一直在努力思考如何向用户提供更有用的反馈(因为我同意它没有任何输出有点令人困惑)。 15分钟后我就放弃了。 正如@techalchemy指出的那样,每次缓存都应该填充更多,因此随着时间的推移它应该会变得更快。

一个问题:您使用的是公共 PyPI 吗?

@jtratner是的,使用公共 PyPi --- 我最终还是放弃了,破坏了 virtualenv 并建立了一个新的; 我确实设法通过一次安装一个依赖项来构建一个锁定文件。 (有趣的是,matplotlib 是最慢的——甚至比 numpy 还要糟糕!)

在确定更清晰的解决方案之前,也许像This may take a long time这样的消息会有助于让人们放心。

15 分钟仍然很长,我怀疑我会坐等它。 @paultopia您可以运行pipenv lock —verbose以获得更多输出

它确实有一种比它应该慢的普遍感觉,但也许我低估了这个问题。 如果我查看计算机中正在运行的进程,我可以看到在 pipenv 运行的整个过程中运行的 python 进程,并且它永远不会超过 ~15%,如果它正在执行 cpu 密集型工作(如散列文件),它可能应该使用更多它. 此外,我还使用了其他散列依赖项的包管理器,例如 yarn,它们的速度非常快。

我们需要弄清楚它在做什么......

我创建了一个 github 项目,显示使用锁定时速度很慢。 请查看https://github.com/AndreasPresthammer/slow-pipenv 。 我不是 100% 确定这是同一个问题。 拉下repo,运行slow.sh脚本,观察执行时间的差异。

@AndreasPresthammer,因此您的脚本只是在计时未缓存的锁与使用锁安装。 我们知道这是锁定,但这很慢。 在 numpy 的情况下,这可能是因为它过去必须使用 sdists 进行解析,这意味着编译。 我们现在可以使用轮子了​​。 这可能会加快速度

这绝对是一个问题(5 分钟以上),使用最新的 python3.6、pip 和 pipenv 版本,并安装像torch这样的简单包。 我认为不应将此问题标记为已关闭。

对于任何想要评论此问题已关闭的人:提供pipenv lock --verbose的输出。 我们知道从源代码编译的包的解析速度很慢,并且在正常条件下需要很长时间才能构建。 如果这比正常速度慢,我们需要日志来深入了解原因。

我还在我的开发和生产环境中使用 Docker,并且认为 Docker 内部的安装与主机上的安装相比感觉很慢。 也许这只是所有软件包的组合,但我想听听比我更有经验的人的一些反馈。

这是pipenv lock --verbose的日志,包括PipfilePipfile.lock

https://gist.github.com/mimischi/6270b7ece566cc571b427baaf1c331d4

@mimischi解析结果缓存在主机中,但 Docker 无法访问它们。 它很慢,因为它需要从头开始重做所有分辨率。 如果将主机的缓存目录挂载到 Docker 中会有所帮助。 问题中有一条评论提到您应该安装的路径。 我现在没有时间查,但你可以试着找到它。 (并且请在您这样做时将其贡献给文档的常见问题解答页面!)

FWIW,锁定我的开发箱现在只需不到 30 秒。 比以前好多了——感谢它。

你好,遇到同样的问题。
这是详细的

pipenv lock --verbose
Locking [dev-packages] dependencies…
Using pip: -i https://pypi.python.org/simple

                          ROUND 1                           
Current constraints:
  pylint

Finding the best candidates:
  found candidate pylint==1.9.1 (constraint was <any>)

Finding secondary dependencies:
  pylint==1.9.1             requires astroid<2.0,>=1.6, isort>=4.2.5, mccabe, six

New dependencies found in this round:
  adding ['astroid', '<2.0,>=1.6', '[]']
  adding ['isort', '>=4.2.5', '[]']
  adding ['mccabe', '', '[]']
  adding ['six', '', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2                           
Current constraints:
  astroid<2.0,>=1.6
  isort>=4.2.5
  mccabe
  pylint
  six

Finding the best candidates:
  found candidate astroid==1.6.4 (constraint was >=1.6,<2.0)
  found candidate isort==4.3.4 (constraint was >=4.2.5)
  found candidate mccabe==0.6.1 (constraint was <any>)
  found candidate pylint==1.9.1 (constraint was <any>)
  found candidate six==1.11.0 (constraint was <any>)

Finding secondary dependencies:
  pylint==1.9.1             requires astroid<2.0,>=1.6, isort>=4.2.5, mccabe, six
  astroid==1.6.4            requires lazy-object-proxy, six, wrapt
  isort==4.3.4              requires -
  mccabe==0.6.1             requires -
  six==1.11.0               requires -

New dependencies found in this round:
  adding ['lazy-object-proxy', '', '[]']
  adding ['wrapt', '', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 2: not stable

                          ROUND 3                           
Current constraints:
  astroid<2.0,>=1.6
  isort>=4.2.5
  lazy-object-proxy
  mccabe
  pylint
  six
  wrapt

Finding the best candidates:
  found candidate astroid==1.6.4 (constraint was >=1.6,<2.0)
  found candidate isort==4.3.4 (constraint was >=4.2.5)
  found candidate lazy-object-proxy==1.3.1 (constraint was <any>)
  found candidate mccabe==0.6.1 (constraint was <any>)
  found candidate pylint==1.9.1 (constraint was <any>)
  found candidate six==1.11.0 (constraint was <any>)
  found candidate wrapt==1.10.11 (constraint was <any>)

Finding secondary dependencies:
  astroid==1.6.4            requires lazy-object-proxy, six, wrapt
  wrapt==1.10.11            requires -
  lazy-object-proxy==1.3.1  requires -
  six==1.11.0               requires -
  pylint==1.9.1             requires astroid<2.0,>=1.6, isort>=4.2.5, mccabe, six
  mccabe==0.6.1             requires -
  isort==4.3.4              requires -
------------------------------------------------------------
Result of round 3: stable, done

Locking [packages] dependencies…

这是pipenv --version :pipenv,版本 2018.05.18

另外我不知道为什么会发生这种情况,没有发生具体原因/错误。
就我而言,当我执行pipenv lock它会开始,但据我所知,它永远不会结束。 我已经等了 2 小时,现在仍然没有完成的迹象。 并且给了我两次ReadTimeoutError这是我第三次这样做。
使用 Python 3.6.4

随着我的项目截止日期越来越近,任何帮助都会有很大帮助。

还投票支持重新打开此问题。 它远未解决……需要 10-20 分钟将我的项目锁定在 Docker 容器中。 它还使用了大量的内存——因此我不得不增加对 Docker 的分配以阻止它终止进程。

如果您需要有关解决速度问题的帮助,请提供有关您的环境的示例 Pipfiles 和详细信息。 我们本周将发布一个版本,没有时间跟踪已关闭线程上的单个一次性评论,但如果您提供一个,可以针对 Pipfiles 进行测试

@jkp 请允许我向您保证,该项目的每一位核心开发人员(并不是我们很多人一开始)都非常清楚这个问题,并且和您一样受到困扰,如果不是更多的话。 然而,这绝不是一个简单的问题,我们已经竭尽全力让它尽可能可用,而不必在 Python 包装中拆掉所有东西。 我们也有我们的板有很多的时刻,并且需要同时关注那些等问题。 因此,我必须做出的不可避免的决定是优先考虑我们实际上知道如何解决的问题,并在完成之后才开始考虑我们的下一步,以最大限度地发挥我们努力的效果。

现在,我完全承认您的优先级可能与我们的不同。 这个性能问题可能是您工作流程中最大的问题,您希望将其作为该项目中最重要的事情。 但是请记住,您不是此工具的唯一用户,我们需要优先考虑所有人的需求,甚至是我们自己的需求,在您面前。 我承认这一点。 因此,我敦促任何分享这种情况的人就这个问题加入思想​​,并尝试想办法解决它。 一旦我们知道实际要做什么,我们就可以去做。

该问题保持关闭是因为我们不知道我们能做什么,并且在我们尝试管理它时只会在问题跟踪器中充当噪音。 至少在我们的工作流程中,没有任何人可以解决的问题。

欣赏您的工作流程,如果这是您管理问题的方式,那很好。 我将尝试添加任何可以帮助追查问题的信息。

我通过在pipenv和网络之间安装mitmproxy进行pipenv一些调试,以跟踪正在发出的请求。 我发现了一些有趣的事情。

  1. 我们正在使用不支持json-api的私有pypi索引。 这会显着减慢速度,因为看起来后备是暴力破解并下载 http 索引中列出的所有内容以提取元数据等。这里的一个建议是添加一些简单的日志记录以警告正在使用这种后备方法 - 它可能会节省其他人不得不深入挖掘来解决这个问题。

  2. 使用蛮力方法似乎代码下载了与所使用的体系结构无关的包。 例如,在 linux 机器上,它正在下载win32osx特定的轮子包。 这感觉像是可以检测和避免的事情,因为很明显为其他架构构建的二进制包不会有任何用处。

我将继续调试并报告我发现的任何有用信息。

似乎即使使用 json 接口pipenv也会对与不同架构相关的轮文件发出不必要的请求。 该实现目前非常幼稚,因为它检查针对给定版本列出的所有文件,而不管目标平台/架构如何。

最小测试用例:

在 Linux 主机上: pipenv install grpcio

产生了以下请求(使用mitmproxy捕获):

$ mitmdump -w dump.out
Proxy server listening at http://*:8080
127.0.0.1:62303: clientconnect
127.0.0.1:62303: GET https://pypi.org/simple/setuptools/
              << 200 OK 79.82k
127.0.0.1:62305: clientconnect
127.0.0.1:62305: GET https://files.pythonhosted.org/packages/7f/e1/820d941153923aac1d49d7fc37e17b6e73bfbd2904959fffbad77900cf92/setuptools-39.2.0-py2.py3-none-any.whl
              << 200 OK 554.25k
127.0.0.1:62303: GET https://pypi.org/simple/pip/
              << 200 OK 9.56k
127.0.0.1:62303: GET https://pypi.org/simple/wheel/
              << 200 OK 6.91k
127.0.0.1:62303: clientdisconnect
127.0.0.1:62305: clientdisconnect
127.0.0.1:62307: clientconnect
127.0.0.1:62307: GET https://pypi.org/simple/grpcio/
              << 200 OK 112.03k
127.0.0.1:62309: clientconnect
127.0.0.1:62309: GET https://files.pythonhosted.org/packages/1f/ea/664c589ec41b9e9ac6e20cc1fe9016f3913332d0dc5498a5d7771e2835af/grpcio-1.12.1-cp36-cp36m-manylinux1_x86_64.whl
              << 200 OK 8.57m
127.0.0.1:62307: GET https://pypi.org/simple/six/
              << 200 OK 3.34k
127.0.0.1:62309: GET https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
              << 200 OK 10.45k
127.0.0.1:62309: clientdisconnect
127.0.0.1:62307: clientdisconnect
127.0.0.1:62311: clientconnect
127.0.0.1:62311: GET https://pypi.org/simple/grpcio/
              << 200 OK 112.03k
127.0.0.1:62313: clientconnect
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/1f/ea/664c589ec41b9e9ac6e20cc1fe9016f3913332d0dc5498a5d7771e2835af/grpcio-1.12.1-cp36-cp36m-manylinux1_x86_64.whl
              << 200 OK 8.57m
127.0.0.1:62311: GET https://pypi.org/simple/six/
              << 200 OK 3.34k
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
              << 200 OK 10.45k
127.0.0.1:62315: clientconnect
127.0.0.1:62315: GET https://pypi.org/pypi/six/json
              << 200 OK 5.94k
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz
              << 200 OK 29.16k
127.0.0.1:62315: GET https://pypi.org/pypi/grpcio/json
              << 200 OK 164.26k
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/5c/73/5e65b81301956bdd32c5e8da691fde3fbd6e61283b65d2bac590b8f43765/grpcio-1.12.1-cp27-cp27m-win32.whl
              << 200 OK 1.35m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/e1/c3/bcce8247da4e6f95a900489b6f7ff3d14d93df40d69875fe4164c1b9544a/grpcio-1.12.1-cp27-cp27mu-manylinux1_i686.whl
              << 200 OK 8.01m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/ed/89/03924c56e9044b0842a014fcc0a81f55975028d1caa9cdd14234a230bc70/grpcio-1.12.1-cp27-cp27m-win_amd64.whl
              << 200 OK 1.35m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/d7/f6/ddeab13c25b8451f05875587801ad87e4e0fc23c4e3eb328c4bd1a80a415/grpcio-1.12.1-cp36-cp36m-linux_armv7l.whl
              << 200 OK 7.77m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/2d/a4/4d1d73c0339e987ea173f44cf62ec6b40fb91e0336c09c960c4a44137552/grpcio-1.12.1-cp35-cp35m-linux_armv7l.whl
              << 200 OK 7.76m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/76/27/b03ec8fc96745cde68d6ec29115f9a444945a6acc45209c5772378cc4d66/grpcio-1.12.1-cp35-cp35m-macosx_10_7_intel.whl
              << 200 OK 1.83m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/30/24/8e247548321e52c266a639b51a838ec19b41fb6bfd27e3bbef018496752e/grpcio-1.12.1-cp27-cp27m-manylinux1_x86_64.whl
              << 200 OK 8.47m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/80/c9/e582b962a4a3aa2684666ff67fc994a042b1b0e444eb6672eb9740f7b59a/grpcio-1.12.1-cp34-cp34m-macosx_10_7_intel.whl
              << 200 OK 1.84m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/a2/25/6d910070a4a07c32633c2376075d5dc03e90f69f855d700e3f73c1affebb/grpcio-1.12.1-cp27-cp27m-macosx_10_12_x86_64.whl
              << 200 OK 1.57m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/33/38/58f3e8d133de1f2e911206ead03799621205079c303ae5b27e7350051f4a/grpcio-1.12.1.tar.gz
              << 200 OK 13.56m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/68/57/da122cbfc1b7815381480b23044fff06b90f58c1be9310e68c2d6b1d623c/grpcio-1.12.1-cp36-cp36m-macosx_10_7_intel.whl
              << 200 OK 1.82m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/c6/b8/47468178ba19143e89b2da778eed660b84136c0a877224e79cc3c1c3fd32/grpcio-1.12.1-cp35-cp35m-manylinux1_x86_64.whl
              << 200 OK 8.55m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/5d/8b/104918993129d6c919a16826e6adcfa4a106c791da79fb9655c5b22ad9ff/grpcio-1.12.1-cp36-cp36m-win_amd64.whl
              << 200 OK 1.37m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/94/6c/02e9cb803cd7b9608c9c1768d86d31c61b088f5b9513a203c10fa7e905d8/grpcio-1.12.1-cp36-cp36m-win32.whl
              << 200 OK 1.12m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/2a/ed/71169dccb7f9250d17031068579832371a72891d8e64891265370ca6e264/grpcio-1.12.1-cp27-cp27mu-linux_armv7l.whl
              << 200 OK 7.68m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/63/38/d73bf5b1ef950dbab8203122b9681137b35012492ecfec56719be109e343/grpcio-1.12.1-cp27-cp27m-manylinux1_i686.whl
              << 200 OK 8.01m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/13/71/87628a8edec5bffc86c5443d2cb9a569c3b65c7ff0ad05d5e6ee68042297/grpcio-1.12.1-cp36-cp36m-manylinux1_i686.whl
              << 200 OK 8.11m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/1d/0d/146582f71161a0074dda2378617ae5f7e2c3d6cf62d4588eb586c1d6b675/grpcio-1.12.1-cp27-cp27mu-manylinux1_x86_64.whl
              << 200 OK 8.47m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/9e/3a/6aceb4fccacf6d2d7d087190c221a90f14b2bdcb56cbee5af24b7050278b/grpcio-1.12.1-cp34-cp34m-win_amd64.whl
              << 200 OK 1.35m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/f9/fa/a0187d220544b744dd3bb0d8b8ec716d130159160bf627415b2880ae599a/grpcio-1.12.1-cp34-cp34m-win32.whl
              << 200 OK 1.35m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/dd/aa/ac8e3c6badf1744f04be7d35fa95dae56df12b956f861285c8cced2a22cb/grpcio-1.12.1-cp34-cp34m-linux_armv7l.whl
              << 200 OK 7.76m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/38/2a/94665daafbcf0214adcf77ad8f5aed8b9dfcbfa871115c7890d88b1b8f3c/grpcio-1.12.1-cp34-cp34m-manylinux1_x86_64.whl
              << 200 OK 8.58m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/0d/33/22ad4a9dcefe330180cdb2d24fdd980af2a7a2dc03af208a408fd48195e0/grpcio-1.12.1-cp35-cp35m-win_amd64.whl
              << 200 OK 1.36m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/b5/13/9e8e5d68a15c51b251e512955a971214fd8425b237e6d6a04f0257c5d090/grpcio-1.12.1-cp34-cp34m-manylinux1_i686.whl
              << 200 OK 8.11m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/21/41/66ab386c65be68b4e907f2cd35223965aea2a086bcd0bd6825999e0bda7c/grpcio-1.12.1-cp35-cp35m-win32.whl
              << 200 OK 1.12m
127.0.0.1:62313: GET https://files.pythonhosted.org/packages/f7/db/fc084f59804a32a8d6efb467896a505f4dc93ea89ec44da856b91f05a5cb/grpcio-1.12.1-cp35-cp35m-manylinux1_i686.whl
              << 200 OK 8.09m
127.0.0.1:62313: clientdisconnect
127.0.0.1:62311: clientdisconnect
127.0.0.1:62315: clientdisconnect

计算一些不必要的请求:

  • 4 x win32
  • 4 个手臂
  • 4 个 macOS

等等。基于主机操作系统和拱门做一些简单的过滤似乎是一个快速的胜利?

您想要按主机和架构过滤的东西,大多数其他人想要一个包含哈希的锁定文件,允许它们安装在这些主机和架构上(我们在 pip 解析器代码库中有大量黑客专门启用此功能,所以它不是给我们的消息)

关于 JSON api,它实际上并没有在当前版本中直接启用,我计划在我们发布之前再次在代码库中禁用它。 我已经进行了广泛的分析,并且我知道对packaging.version.parse()失败调用占 pipenv 运行时的 20-50%。

然而,Pip 10 默认使用 JSON API 作为其主要解析器,因此除非您想停止使用 pip,否则在这方面没有什么可做的。

我觉得我们必须多次下载相同的东西,对吧?

我们可能应该将讨论移至#2284。 实际上是缓慢的锁定部分( install本质上是 TOML 操作 + lock + sync ),而不是安装。

关于锁定到单拱门。 我了解设计选择; 也许可以选择传递标志以允许用户仅锁定主机架构? 对于某些用例,这在时间和带宽方面都是非常重要的优化。

@techalchemy感谢您的回复。 packaging.version.parse()发现似乎是一个很好的线索。 您能否在此声明中添加更多颜色:

关于 JSON api,它实际上并没有在当前版本中直接启用,我计划在我们发布之前再次在代码库中禁用它。

我不明白你为什么打算禁用它?

@jkp关于 JSON API,我们只能说它不是最好的设计。 简单的 API更适合我们。 通过禁用它,我们使用的是简单的 API,而不是完全不使用任何 API。

我安装 Pyspark 的时间太长了。
我的 Pipfile -

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

[dev-packages]
pylint = "*"
pyspark = "*"

[requires]
python_version = "3.5"

外壳输出 -

Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...

进程卡在上面的最后一行。
15-20分钟后结束

pipenv,版本 2018.7.1

@keshavkaul PySpark非常大,下载可能需要相当长的时间。 给它一些时间,之后会好很多(因为 Pipenv 缓存了结果)。

(或者您可以敦促开发人员发布轮子发行版。这会有所帮助。)

给未来访客的注意事项:请不要发布您的缓慢安装结果。 我们知道它可能很慢。 我们知道为什么它很慢。 您的结果不会向该主题添加任何内容。

在库下载期间是否有可能有一些信息或进度条,如 apt-get 或 wget(下载速度、下载大小、总大小)?
我想这是这里的问题,pipenv 对我来说似乎很慢,但这只是库下载,我必须打开系统监视器才能了解 pipenv 正在下载文件,已经下载了多少,速度等

有同样的问题: Locking [packages] dependencies...永远挂起
我的环境:

  • macOS High Sierra 10.13.6
  • Python:Python 3.6.4
  • pipenv:版本 2018.7.1

@crifan没有必要在提到锁定速度的每个打开或关闭的问题上发布相同的消息。 无论您说多少次相同的事情,我们都会看到您的评论。 如果您想提供帮助,您将需要提供可重现的示例案例。 插话说“我也是”除了问题跟踪器上的额外流量外,根本不会增加任何东西。 请注意这一点。

同样在这里。 Pipenv 很慢。
锁定和安装需要一个小时。

我认为这个问题在这里得到了很好的回答: https :

Python 依赖项要求我们完全下载并执行每个包的设置文件来解析和计算。 这只是现实,它有点慢。 如果你不能等待 2 分钟,或者你觉得不值得权衡,你总是可以通过--skip-lock

  • 通过@techalchemy

是否可以从 PyPI API 获取哈希列表,而不是自己计算它们?

pipenv 很棒,但是这个问题似乎仍然存在。 很高兴看到任何进展。 --skip-lock 不起作用。

pipenv 很棒,但是这个问题似乎仍然存在。 很高兴看到任何进展。 --skip-lock 不起作用。

为我工作

我发现在 Windows 上使用 Git Bash 与 Powershell 相比非常慢。 我没有这方面的任何统计数据或数据,但 PS 似乎更快。 因此,如果您使用的是 Git Bash,您可能想尝试使用原生 PS for pipenv 'ing。

我知道这个问题已经解决了,但是对我来说安装熊猫需要很多时间。 详细输出是这样的

pipenv install pandas --verbose
Installing pandas…
⠋ Installing...Installing 'pandas'
$ ['/Users/sinscary/.local/share/virtualenvs/signzy-MSzur11z/bin/pip', 'install', '--verbose', '--upgrade', 'pandas', '-i', 'https://pypi.org/simple']
Adding pandas to Pipfile's [packages]…
✔ Installation Succeeded
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
⠦ Locking...

卡在 Locking 超过 30 分钟。 我正在使用 python 3.7.0,macos mojave。 任何帮助。

为什么这个话题的所有问题都关闭了? 由于锁步挂起,我无法安装任何东西。

在我的笔记本电脑(i7/16Gb)上构建以下 docker 映像需要 30 多分钟, pipenv install ...命令运行了很长时间......

Dockerfile

FROM python:3.7-alpine

# Update package list.
RUN set -ex && apk update

# Install apk dependencies.
RUN set -ex && apk add --no-cache musl-dev gcc libffi-dev openssl-dev make

# Install Pipenv.
RUN set -ex && pip install pipenv --upgrade

# Copy Pipfiles.
RUN mkdir /website
COPY Pipfile /website

# Install Pipenv dependencies.
WORKDIR /website
RUN set -ex && pipenv install --system --skip-lock --verbose

Pipfile

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


[requires]
python_version = "3.7"

[packages]
sanic = "*"
jinja2 = "*"
asyncpg = "*"
uvloop = "*"
munch = "*"

[dev-packages]

[pipenv]
allow_prereleases = true

这是正常的吗? 有人可以复制吗?

更新:小心Alpine Linux

我意识到问题不在于pipenv的一方......

我将Alpine基础 docker-image 替换为基于Debian-Slim构建的镜像,现在pipenv install在几秒钟内完成。

我的示例中的问题是,Alpine Linux 将始终尝试从源代码构建包含cython-extensionc-extensions软件包,这可能会在 Docker 容器中永远占用,而 Debian Linux 使用wheel安装它们

更多信息: https :

我早就离开了 pipenv,每当我需要使用“venv”或其他选项创建虚拟环境时。

还有一个奇怪的缓慢问题,我正在做的一些脚本只有 2 个模块。

click

安装时间为 15/20 分钟,互联网测试速度超过 60Mbps,并在最新的 MacBook Pro 2019(不是我选择的硬件)上运行。

请暂时使用 virtualenv。 直到有更好的解决方案可用

在我这样做的 99% 的时间里,依赖项将解析为我的锁定文件中的同一个,这是因为它是我的开发管道的一部分。

在自上次运行以来没有新的上游包的情况下,肯定可以跳过该过程吗?

此页面是否有帮助?
0 / 5 - 0 等级