【问题标题】:Pip install from source without building a wheel无需构建轮子即可从源代码进行 Pip 安装
【发布时间】:2021-12-16 23:06:04
【问题描述】:

我有一个包含大型 PyTorch 模型检查点的 Python 包。我尝试在我的setup.py 中包含这些内容

package_data = {'mypackage': ['model_weights/*', 'model_weights/sequential_models*']},

现在的问题是,每当我尝试通过pip install mypackage/ --no-cache-dir 从源安装时,我都会得到MemoryError。我尝试使用--verbose 进行调试,发现这发生在

creating '/tmp/pip-wheel-bs29bp6a/tmpp0itbxn1/mypackage-1.0-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'mypackage/model_weights/distilled_model.pt'
adding 'mypackage-1.0.dist-info/RECORD'
Traceback (most recent call last):
...
File "/zhome/1d/8/153438/miniconda3/envs/testenv/lib/python3.9/zipfile.py", line 1127, in write
      data = self._compressor.compress(data)
MemoryError
Building wheel for mypackage (PEP 517) ... error
ERROR: Failed building wheel for mypackage

我真的只希望安装将model_weights/ 中的文件复制到安装目录。将它们包括在轮子中似乎是不可能的。

在运行pip install 时有没有办法抑制这一步?该包只会作为源分发,绝不会在 PyPI 上分发,因为无论如何model_weights 文件都太大了。

【问题讨论】:

  • 我认为从架构的角度来看,最好不要将模型包含在源代码中。有点像您使用许多其他 ML 和 NLP 包。它们包含逻辑但不包含要采取行动的数据。以后使用包时需要用户自己获取。
  • 知道如何最好地实现它吗?我没有办法托管它们以按需缓存,这就是为什么我将它们包含在包源中以供下载。
  • 我不确定它是否适合您,但过去我曾在 GitHub 存储库和 Google Drive 中托管过大型文件,例如预先训练的模型权重。
  • 我不推荐它,可能有更好的方法,也可能现在不再起作用,但短期内可能会有所帮助:stackoverflow.com/a/58290113

标签: python pip pytorch setuptools


【解决方案1】:

pip install 总是造轮子。为避免这种情况,请避免使用pip install。而是使用

python setup.py install

https://docs.python.org/3/install/index.html#standard-build-and-install

【讨论】:

    【解决方案2】:

    你可以跑

    $ pip install mypackage/ --no-cache-dir --no-binary=mypackage
    

    跳过轮子构建(假设 mypackage 实际上是您的发行版名称 - 这是您作为 name 传递给 setup() 函数的名称)。

    【讨论】:

      猜你喜欢
      • 2019-07-12
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 2016-03-18
      相关资源
      最近更新 更多