Pipenv: 锁定很慢(并执行冗余下载)

创建于 2018-05-31  ·  63评论  ·  资料来源: pypa/pipenv

这是我安装的问题吗? 它发生在我所有的机器上......我/我们可以做些什么来加速它?

我安装了一个软件包,锁定似乎需要几分钟。

Locking [packages] dependencies…

$ python -m pipenv.help 输出

Pipenv 版本: '2018.05.18'

Pipenv 位置: '/Users/colllin/miniconda3/lib/python3.6/site-packages/pipenv'

蟒蛇位置: '/Users/colllin/miniconda3/bin/python'

PATH其他 Python 安装:

  • 2.7 : /usr/bin/python2.7
  • 2.7 : /usr/bin/python2.7
  • 3.6 : /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m
  • 3.6 : /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
  • 3.6 : /Users/colllin/miniconda3/bin/python3.6
  • 3.6 : /Users/colllin/.pyenv/shims/python3.6
  • 3.6 : /usr/local/bin/python3.6

  • 3.6.3 : /Users/colllin/miniconda3/bin/python

  • 3.6.3 : /Users/colllin/.pyenv/shims/python
  • 2.7.10 : /usr/bin/python
  • 3.6.4 : /Library/Frameworks/Python.framework/Versions/3.6/bin/python3
  • 3.6.3 : /Users/colllin/miniconda3/bin/python3
  • 3.6.4 : /Users/colllin/.pyenv/shims/python3
  • 3.6.4 : /usr/local/bin/python3

PEP 508 信息:

{'implementation_name': 'cpython',
 'implementation_version': '3.6.3',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '17.5.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 17.5.0: Mon Mar  5 22:24:32 PST '
                     '2018; root:xnu-4570.51.1~1/RELEASE_X86_64',
 'python_full_version': '3.6.3',
 'python_version': '3.6',
 'sys_platform': 'darwin'}

系统环境变量:

  • TERM_PROGRAM
  • NVM_CD_FLAGS
  • TERM
  • SHELL
  • TMPDIR
  • Apple_PubSub_Socket_Render
  • TERM_PROGRAM_VERSION
  • TERM_SESSION_ID
  • NVM_DIR
  • USER
  • SSH_AUTH_SOCK
  • PYENV_VIRTUALENV_INIT
  • PATH
  • PWD
  • LANG
  • XPC_FLAGS
  • PS1
  • XPC_SERVICE_NAME
  • PYENV_SHELL
  • HOME
  • SHLVL
  • DRAM_ROOT
  • LOGNAME
  • NVM_BIN
  • SECURITYSESSIONID
  • _
  • __CF_USER_TEXT_ENCODING
  • PYTHONDONTWRITEBYTECODE
  • PIP_PYTHON_PATH

Pipenv 特定的环境变量:

调试特定的环境变量:

  • PATH : /Library/Frameworks/Python.framework/Versions/3.6/bin:/Users/colllin/miniconda3/bin:/Users/colllin/.pyenv/plugins/pyenv-virtualenv/shims:/Users/colllin/.pyenv/shims:/Users/colllin/.pyenv/bin:/Users/colllin/.nvm/versions/node/v8.1.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
  • SHELL : /bin/bash
  • LANG : en_US.UTF-8
  • PWD : /Users/.../folder

Pipfile ('/Users/.../Pipfile') 的内容:

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

[packages]
gym-retro = "*"

[dev-packages]

[requires]
python_version = "3.6"

Dependency Resolution Future Performance

最有用的评论

我注意到lock真的很慢,并且从files.pythonhosted.org下载了大量数据,对于一个依赖于scipy flask等的项目,下载量超过 800MB。

所以我嗅探了对files.pythonhosted.org的请求,结果发现 pip 或 pipenv 正在执行完全不必要的下载,这使得lock非常缓慢。

1535625096148

例如,相同版本的numpy已被多次完整下载。 尽管我使用的是 Mac,但它为 windows / linux 下载了轮子。

我的设置:

$ pipenv --version
pipenv, version 2018.05.18

$ pip -V
pip 18.0 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)

所有63条评论

@colllin您是否检查过与服务器联系的 pip 命令(例如pip search (我认为))是否也很慢?

我看到了类似的行为,但这是一个已知问题并且依赖于网络。 出于某种原因,从我的工作网络访问 pypi.org 的速度非常慢,但通常从我的家庭网络访问速度很快。 我认为锁定会在幕后进行大量 pip 事务,因此对服务器的缓慢访问会大大减慢操作速度。

编辑:也可能是您需要解决很多子依赖项-创建的环境有多大(例如,pipfile 中有多少顶级包,以及pip list返回的包有多少)一旦环境被引导)?

感谢您的周到回复。

pip search对我来说不是特别快或特别慢...~1 秒?

原谅我缺乏领域知识:真的需要pip搜索吗? 不是安装了所有东西吗? 不是只需要写下已经安装的东西吗? 或者...因为它无论如何都确保了锁定文件的存在,它可以在安装软件包时或之前这样做吗?

我猜... pipenv 在幕后使用 pip ? 所以安装过程是一个黑匣子,如果不做~a pip search~自己的pip查询,它就无法知道已经/将要安装的依赖图?

编辑:在这个特定的 repo 中有 1 个顶级包,以及pip list返回的 ~65 个包。

我不是该项目的贡献者,目前我不知道所有细节,但我的理解是锁定阶段是所有依赖项得到解决和固定的地方。 因此,如果您有一个包含约 65 个依赖项的顶级包,那么在锁定阶段,第一个包的所有依赖项都被(递归地)发现,然后依赖树用于解决需要安装的包和(可能)它们应该以什么样的粗略顺序安装。对最后一部分不太确定。

如果您从没有锁定文件的 Pipfile 进行 pip install,您会注意到它将软件包安装到 venv--deploy选项安装会更快, --no-lock选项也是如此; 在前一种情况下,如果锁定文件已过期,则会出现错误,在后一种情况下,您将丢失顶级包(声明的环境)和所有包的实际安装(锁定)环境的逻辑拆分。 至少我是这样理解的。

无论 pipenv 是否在幕后使用 pip - 我认为它确实 - 它仍然需要从 pypi 服务器获取有关包依赖项等的信息,所以我关于 pip 搜索的问题更多是关于多快或多快的代理减慢通往 pypi 服务器的路径不仅仅是对 pipenv 执行其操作的机制的直接暗示。

一个有趣的实验可能是比较在 pipenv 中锁定依赖树所需的时间,以及使用pip install -r requirements.txt将需求安装到新的 venv 中所需的时间。 我认为他们应该在依赖解析阶段做非常相似的事情。

顺便说一句,我们是否在某个地方建立了冗余下载? 我怀疑是这样,但证明它真的很有帮助

仅供参考,将pip install -r requirements.txt锁定依赖图所花费的时间进行比较不会作为比较点提供信息。 Pip 实际上并没有_拥有_解析器,在任何真正意义上都没有。 我想我可以描述差异。 当 pip 安装您的requirements.txt ,它遵循以下基本过程:

  • 找到列出的第一个要求

    • 找到它的所有依赖项

    • 全部安装

  • 找到列出的第二个要求

    • 找到它的所有依赖项

    • 全部安装

  • 找到列出的第三个要求

    • 找到它的所有依赖项

    • 全部安装

事实证明这非常快,因为 pip 并不真正关心 _package 1_ 的依赖项是否与 _package 3_ 的依赖项冲突,它只是最后安装了 _package 3_ 中的依赖项,这就是你得到的。

Pipenv 遵循不同的过程——在构建环境之前,我们计算一个分辨率图,尝试满足您指定的所有依赖项。 这意味着我们必须开始下载、比较,有时甚至是 _building_ 包,以确定您的环境最终应该是什么样子,这一切都在我们开始安装它的实际过程之前(有很多博客文章关于为什么会这样在 python 中就是这种情况,所以我不会在这里详细介绍)。

由于需要散列,该解析过程的每个步骤的计算成本都更高,这是最佳实践。 我们在收到包后对传入的包进行散列,然后将它们与 PyPI 告诉我们应该期望的散列进行比较,并将这些散列存储在锁定文件中,以便将来想要构建相同环境的人可以这样做合同保证他们构建的软件包与您最初使用的软件包相同。

Pip 搜索对于其中任何一个来说都是一个糟糕的基准测试,事实上,任何 pip 的工具对于完成这项工作都是一个糟糕的基准测试——我们对它的每一部分都使用 pip,但是将它放在一起并跨越许多依赖项来形成和管理环境和图形是添加 pipenv 值的地方。

澄清一点——一旦你解决了完整的依赖关系图,安装顺序就不再重要了。 在幕后,我们实际上将--no-deps传递给每个安装。

顺便提一下,pip search 是目前唯一依赖于现已弃用的 XMLRPC 接口的 pip 工具,该接口不可缓存且速度非常慢。 它总是比任何其他操作都慢。

在我的机器上锁定 numpy(没有其他)需要 220 秒(见下文)。 大部分时间似乎都花在下载超过 200MB 的数据上,考虑到整个 numpy 源有 4 MB,这很令人费解。 虽然很明显,即使那是即时的,实际处理仍然有 25 秒,即使计算一些散列也似乎过多。 后续加锁,即使删除 Pipenv.lock 后,也需要 5 秒。

11:46 ~/Co/Ce/torchdft time pipenv install
Creating a virtualenv for this project…
Using /usr/local/Cellar/pipenv/2018.5.18/libexec/bin/python3.6 (3.6.5) to create virtualenv…
⠋Already using interpreter /usr/local/Cellar/pipenv/2018.5.18/libexec/bin/python3.6
Using real prefix '/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/hermann/.local/share/virtualenvs/torchdft-mABBUp_t/bin/python3.6
Also creating executable in /Users/hermann/.local/share/virtualenvs/torchdft-mABBUp_t/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/hermann/.local/share/virtualenvs/torchdft-mABBUp_t
Creating a Pipfile for this project…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (ca72e7)!
Installing dependencies from Pipfile.lock (ca72e7)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run the following:
 $ pipenv shell
        7.81 real         6.39 user         1.64 sys
11:46 ~/Co/Ce/torchdft time pipenv install numpy --skip-lock
Installing numpy…
Collecting numpy
  Using cached https://files.pythonhosted.org/packages/f6/cd/b2c50b5190b66c711c23ef23c41d450297eb5a54d2033f8dcb3b8b13ac85/numpy-1.14.5-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
Successfully installed numpy-1.14.5

Adding numpy to Pipfile's [packages]…
        4.97 real         2.88 user         1.81 sys
11:46 ~/Co/Ce/torchdft time pipenv lock --verbose
Locking [dev-packages] dependencies…
Using pip: -i https://pypi.org/simple

                          ROUND 1                           
Current constraints:

Finding the best candidates:

Finding secondary dependencies:
------------------------------------------------------------
Result of round 1: stable, done

Locking [packages] dependencies…
Using pip: -i https://pypi.org/simple

                          ROUND 1                           
Current constraints:
  numpy

Finding the best candidates:
  found candidate numpy==1.14.5 (constraint was <any>)

Finding secondary dependencies:
  numpy==1.14.5 not in cache, need to check index
  numpy==1.14.5             requires -
------------------------------------------------------------
Result of round 1: stable, done

Updated Pipfile.lock (4fccdf)!
      219.24 real        25.14 user         5.77 sys

Numpy 现在应该快得多(事实上,我一直在使用您的示例作为测试用例!)。 在我最近的测试中,我在虚拟机上的冷缓存上大约有 30 秒的时间。

您能否确认最新版本有任何改进?

它对我来说也有了很大的改善。 我现在的连接速度非常快,低至 14 秒,但那时下载速度为 30 MB/秒。 除了 numpy 的源代码的单个副本之外,正在下载什么?

我认为我们正在下载多余的轮子(不确定)。 我们已经在评估情况。

我通过卸载 fe 更改彻底更改了我的 Pipfile.lock,现在将其部署在另一台机器上正在冻结。 对此有什么特别的修复吗?

不建议您手动编辑锁文件。 如果没有更多信息,就无法提供帮助。 请打开一个单独的问题。

如果您想对 pipenv 锁的性能进行基准测试,您应该尝试将 pytmx 添加到您的依赖项中...
pipenv 锁定过去需要 1 小时或更长时间(我们的互联网速度很慢),在删除 pytmx 后,我们缩短到大约 5 分钟,最后 pipenv 更有用了。
我知道 pytmx 是一个大包,因为它是一个庞大的单体库,并且依赖于 opengl/pygame 和其他相关的东西,但是无论包有多大,pipenv 锁定都不应该花费 1 小时

对我来说不需要一小时

$ cat Pipfile
[packages]
pytmx = "*"

$ time pipenv lock --clear
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock (eb50ab)!

real    0m2.827s
user    0m2.287s
sys 0m0.390s

此外,PyTMX 在 PyPI 上小于 20kb,并且只有一个依赖于 6(非常小),因此网络应该不是问题。 您的环境中可能发生了其他事情。

你说得对,它比我想象的要小,它并不明确依赖于 pygame 等,不知道为什么要花这么长时间!
我会尝试找到更多信息,但我有一个顶级的 CPU 和 SSD 所以我仍然认为这个问题与我们的网速慢有关

@techalchemy我没有手动编辑文件。 我使用pipenv uninstall package_name卸载了很多依赖项,然后在服务器上运行它。 它在锁定状态下停留了很长时间。

我对在黑暗中随机拍摄的讨论花费精力不感兴趣。 请提供可重现的测试用例。

我希望这是一个可重现的测试用例
https://github.com/Mathspy/tic-tac-toe-NN/tree/ab6731d216c66f5e09a4dabbe383df6dc745ba18

试图做
pipenv install
在这个无锁存储库中,到目前为止已经下载了超过 700MB 左右,同时显示
Locking [packages] dependencies...

稍后会放弃并使用--skip-lock重新运行,直到它被修复

我注意到lock真的很慢,并且从files.pythonhosted.org下载了大量数据,对于一个依赖于scipy flask等的项目,下载量超过 800MB。

所以我嗅探了对files.pythonhosted.org的请求,结果发现 pip 或 pipenv 正在执行完全不必要的下载,这使得lock非常缓慢。

1535625096148

例如,相同版本的numpy已被多次完整下载。 尽管我使用的是 Mac,但它为 windows / linux 下载了轮子。

我的设置:

$ pipenv --version
pipenv, version 2018.05.18

$ pip -V
pip 18.0 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)

额外的 Pipfiles 对这里的调试有帮助吗?

很可能@AlJohri ,有关运行进程/锁/ io 的任何信息也会有所帮助

screenshot 2018-10-25 at 12 27 07
已经被困在这里大约 5 分钟了。 首先认为这可能是某种 pip 安装问题,并通过 Homebrew 重新安装了所有新东西,但仍然是同样的问题。 任何想法为什么?

大约6-7分钟后终于完成了。 对 Python 和 Pipenv 来说还很新,所以关于在哪里可以找到调试所需文件的一些帮助会很棒! :)

这很糟糕,我害怕安装新的 python 库或升级现有的。

在观看了创作者的一场演讲后,我决定使用pipenv 。 但它太慢了。

感谢您的有见地的反馈。

@techalchemy如果我能做些什么来帮助解决这个问题。 我很高兴做出贡献。

我注意到lock真的很慢,并且从files.pythonhosted.org下载了大量数据,对于一个依赖于scipy flask等的项目,下载量超过 800MB。

我有一个怀疑,虽然不是确凿的证据, scipy与很长的pipenv锁定时间相关。

有时真的很痛苦,我正在安装 PyPDF2 和 textract; pipenv 需要大约 10 分钟才能锁定。

pipenv 的缓慢确实阻碍了我们的开发过程。 我现在建议大家坚持使用 pip + virtualenv,直到这个问题得到解决。

有这方面的消息吗? 有什么办法可以帮忙吗?
欺骗https://github.com/pypa/pipenv/issues/1914

/ 编辑:顺便说一句,为什么pipenv install更新锁文件中的版本? o.Ò 我只是在锁定超时后运行它,现在我查看了新的锁定文件,我看到 Pandas 从 0.23.4 更新到 0.24.0,numpy 从 0.16.0 更新到 0.16.1,等等......除非我做了pipenv update否则不要指望这会发生...

我发现它安装很快,锁定很慢,所以一旦你收到Installation Succeeded消息,你就可以继续工作......除非你想安装其他东西......

...或者需要将锁定文件推送到某个仓库中。

install是否应该执行锁定,看到lock已经是一个单独的命令? 同时install选项描述应该指定锁定也发生,甚至可能推荐--skip-lock

另外,如何解决这个问题?

Pipenv 是一个非常棒的工具,我曾经推荐过它,但是一个有 8 个模块的项目无法锁定......它只是超时。 似乎对解决这个问题没有任何兴趣,这非常令人沮丧。 我读到您现在无需从 pypy 下载即可获得依赖项,这是解决此问题的方法吗? 在这里看不到任何关于该选项的讨论。 目前该工具无法用于我的目的。

pexpect.exceptions.TIMEOUT: <pexpect.popen_spawn.PopenSpawn object at 0x10e12e400> searcher: searcher_re: 0: re.compile('\n') <pexpect.popen_spawn.PopenSpawn object at 0x10e12e400> searcher: searcher_re: 0: re.compile('\n') pipenv lock -r 87.22s user 18.57s system 11% cpu 15:02.77 total

这怎么不是这个项目的主要优先事项? Pipenv 太慢了,几乎无法使用。 不仅在一些不常见的方面用例它总是超级慢。

在不太了解幕后发生的事情的情况下,我认为这可以通过依赖关系图的本地缓存很好地解决。

想一想:如果我们缓存x-1.2.3依赖于y>=3.4那个包,我们就可以在本地完成很多目前在一次下载一个包、扩展它们和检查依赖项方面所做的工作. lock阶段将非常简单:

  • 将 Pipfile 与缓存进行比较,确保我们拥有所需的一切。
  • 如果没有,请下载任何新内容并在那里计算依赖项

    • 缓存更改

  • 安装。

在每种情况下,虽然第一次可能很慢,但后续的锁定会很轻松,不是吗?

我只是决定在一个小项目中使用 pipenv 而不是 pip。 我做的第一件事是pipenv install -r requirements.txt 。 它已经锁定依赖项大约 10 分钟了。 因此,我要回到 pip 上。

伙计们,这个问题让你损失了很多用户。 我建议尽快解决。

在我的情况下,在服务器上安装依赖项会使服务器挂起数小时。 我正在使用具有 1 GB RAM 的 AWS EC2 实例t2.micro 。 对于具有很少依赖项的单个应用程序来说,这么多 RAM 就足够了,但是安装会占用所有内存,并且只有一种方法可以通过重新启动服务器来使其工作。

此问题已悬而未决多年,尚未对此进行修复。 我看到多个问题在没有任何解决方案的情况下被关闭。

这么好的工具被忽视了。 我将取消订阅此问题,因为我认为它永远不会得到解决。 将坚持使用 conda 之类的东西,或者使用 virtualenv 手动完成。

猜猜我会给https://github.com/sdispater/poetry一个机会:|

管理员可以关闭此线程以发表评论吗? 讨论中似乎没有添加任何有用的附加内容。

我很乐意订阅一张跟踪解决问题工作的票。

谢谢!

我怀疑 99% 使用此工具并在此线程上抱怨的人都是程序员。 与其抱怨,不如把时间放在嘴边,然后提交 PR。

你好@idvorkin

我试过一次
花了数周的时间来实现微不足道的修复的合并。
只需将讨论量与实际修复大小进行比较。

我绝对不想再向这个项目提交任何修复程序。

所以你的建议并不像你想象的那么可行。

@Jamim代表许多用户(我也怀疑管理员),感谢您的贡献。 我读了你的 PR,我能理解你的挫败感。 但是,我必须同意@techalchemy关于这一点:

当然,我们关心我们维护的库,但我建议措辞可能不是进行积极互动的最有效方式。

我从未见过管理员,但如果他们像我一样(也许还有你),他们就是生活忙碌的人,甚至在他们有精力花在这个项目上之前,他们的生活就充满了承诺。

同样,我敢打赌,如果您(或其他任何人)解决了性能问题,您就会有很多人来帮助您开发、测试、合并它,或者如果需要(我非常怀疑会)创建一个分支.

我很感谢这个项目的开发人员在这方面花费的时间,但我建议应该大胆警告这个项目还没有准备好在README.md的用户推荐之上,目前它是误导人们花费宝贵的时间用 pipenv 替换他们当前的 pip/virtualenv 堆栈,直到他们发现这种缓慢锁定并且他们知道他们无法使用它为止。

直到他们发现这种缓慢的锁定并且他们明白他们不能使用它。

虽然我很乐意加快速度,因为它确实很慢,但没有必要如此夸张。

我每天都在使用 pipenv。 它提供的工作流程改进大大超过了偶尔的缓慢。 例如,锁定不是我一直在做的事情,而不是运行脚本。

您多久锁定一次它实际上成为您觉得无法使用它的问题? :张开嘴:

@bochecha我的陈述在您看来可能pipenv install <something>我不得不等待很长时间,首先我认为它正在计算一些东西,它会缓存它以备将来使用,因为我无法相信这是一个声称是生产就绪的包管理器的问题。 安装 ~10th 包后,我开始搜索它并找到了这个线程,我删除了PipfilePipfile.lock并返回到我的 pip/virtualenv 工作流程。 我很想尝试诗歌,但我不能再冒险一个小时。

例如,这种事情发生在 JS 社区,但我不希望在 Python 社区发生,我们社区没有这种问题,我们应该尽量避免, README.md的免责声明可以避免这种不便,所以我在评论中提出了建议。 它可以节省我今天的时间,我认为它可以为其他新人节省时间,他们不会对这个项目有不好的体验,因此他们可能会成为潜在的未来用户。

我有点同意 sassanh。 并非每个人都受到该问题的同等影响,但我们中的一些人受到的影响非常严重。 我制作的开源项目并不是真正功能齐全或生产准备就绪,在这种情况下,我对其进行了免责声明,这样如果人们还没有准备好迎接颠簸,我就不会浪费他们的时间。

我对从事这个项目的人并不生气,但我对公开谈论它的人有点生气,把它作为一个伟大的工具出售,0 免责声明。 结果,我浪费了很多宝贵的时间试图让一个工具工作,希望从长远来看能节省时间,但我最终不得不回到 pip 和我自己的脚本,因为 pipenv 不起作用在我的时间和带宽受限的环境中。

每次我运行 pipenv install

当您尝试将现有项目移动到 pipenv 时,您是否知道pipenv install -r requirements.txt仅从现有项目中锁定/安装一次? 如果不这样做,问题可能是文档之一?

在我确信 pipenv 将是 pip/virtualenv 工作流程的良好替代品之前,我想我们都知道我们需要它,而且我认为 pipenv 准备好生产的那一天,它将对许多人/项目有很大帮助。

@bochecha正如我所解释的,我必须安装一个更新版本的包,做一些事情,然后使用下一个包,也许如果我用 pip 完成这个过程然后迁移到 pipenv 我根本不会注意到这个问题,但是我先迁移到pipenv,然后一一做了包更新,真的很烦。 我很高兴它适用于您的用例,但我确定它不适用于像我这样的很多人(请看上面的评论)。 应该在README.md中提到,至少应该提到“每个锁定可能需要很长时间,所以如果你的用例包括快速安装/删除大量包,你应该避免使用 pipenv,直到这个问题是解决了”(再次以粗体显示,并在推荐之上)如果您在任何人受到影响之前宣布问题,每个人都会感谢,如果问题影响到他人而您没有警告他们,每个人都会生气。

同意。 我开始研究诗歌,即使每个项目向我的操作系统添加另一个用户,而不是再次使用 pipenv。 如果它在使用默认设置的休闲用例中不能正常工作,那么恕我直言
是一个超级好用的工具! 只有一件事使它对我来说非常无用。 可悲的是,我几乎没有时间做出贡献:|

当然,在开发会话期间必须进行多次安装时等待锁定很烦人,但这可以管理。

重要的是在将本地更改推送到 repo 之前会生成一个锁定文件。 我在开发会话期间明智地使用—skip-lock标志,并在我提交之前最后使用pipenv lock一次。

感谢您的项目。 但,
锁定是verrrrrrrrrrrrrrrrrrrrrrrrrrrrry 慢wwwwwwwwwwwwwwwwwwwwwwwwwwwww

PIP_NO_CACHE_DIR=off
如果已经安装了 pip 包缓存,这个 env 会使锁定更快。

@yssource和大家,

感谢您的项目。 但,
锁定是verrrrrrrrrrrrrrrrrrrrrrrrrrrrry 慢wwwwwwwwwwwwwwwwwwwwwwwwwwwww

这个项目似乎已经死了,所以如果你想消除速度问题,请考虑迁移到速度明显更快的Poetry

@Jamim ,感谢您推荐诗歌。 就个人而言,出于某种原因,我没有遇到它。 阅读其自述文件后,似乎值得一试。 它也列出了 Pipenv 的一些优点(https://github.com/sdispater/poetry/#what-about-pipenv)。

话虽如此,该项目已死是一种严重的夸大其词,如果我站在pipenv作者的立场上,我会觉得这是不尊重的。 作者昨天在问题部分回复了。 只是这个锁定问题被忽视了,可能是因为它很难修复。

根据记录,Poetry 也存在性能问题:
https://github.com/sdispater/poetry/issues/338

我在所有项目中都有同样的问题。
原因似乎是pylint。
Pipenv (pip) 可以安装成功,但是锁需要永远!
pipenv, version 2018.11.26


最小工作示例

djbrown@DESKTOP-65P6D75:~$ mkdir test
djbrown@DESKTOP-65P6D75:~$ cd test
djbrown@DESKTOP-65P6D75:~/test$ pipenv install --dev pylint --verbose
Creating a virtualenv for this project…
Pipfile: /home/djbrown/test/Pipfile
Using /usr/bin/python3 (3.6.9) to create virtualenv…
⠸ Creating virtual environment...Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/djbrown/.local/share/virtualenvs/test-PW-auWy_/bin/python3
Also creating executable in /home/djbrown/.local/share/virtualenvs/test-PW-auWy_/bin/python
Installing setuptools, pip, wheel...done.

✔ Successfully created virtual environment!
Virtualenv location: /home/djbrown/.local/share/virtualenvs/test-PW-auWy_
Creating a Pipfile for this project…
Installing pylint…
⠋ Installing...Installing 'pylint'
$ ['/home/djbrown/.local/share/virtualenvs/test-PW-auWy_/bin/pip', 'install', '--verbose', '--upgrade', 'pylint', '-i', 'https://pypi.org/simple']
Adding pylint to Pipfile's [dev-packages]…
✔ Installation Succeeded
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
⠇ Locking...

我听说过 pipenv 很多,今天试了一下,
锁定对我来说也很慢。 已经2分钟左右了,还是卡在锁定状态。
下载速度相当快,但问题是锁定。
这个问题解决了吗?
我正在使用来自 apt 的 Pop os 19.10、pipenv、11.9.0 版、python 3.7.5。

我想提请注意#1914 关于同一主题https://github.com/pypa/pipenv/issues/1914#issuecomment -457965038 的这篇精彩评论,这表明不再需要下载和执行每个依赖项。

我想知道是否有任何开发人员可以评论这种方法的可行性。

我注意到删除环境并从头开始重新创建它以更新锁定文件实际上更快。
这对于运行pipenv lockpipenv install some-package

我真的很喜欢pipenv但不如我喜欢我的带宽和时间。 所以我最终使用以下方法解决了这个问题:

$ pipenv --rm
$ virtualenv .
$ source bin/activate
$ # Create a requirement file (Cause pipenv lock -r > requirements.txt... you know!)
$ pip install -r requirement.txt

祝开发者一切顺利……

@ravexina谢谢你的建议,我会努力的

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