标签: python-manylinux

我可以从 Auditwheel 修复中排除库吗?

我正在manylinux2014_x86_64为 python 库构建一些预编译的 Linux 轮子,该库充当涉及 CUDA 的 C++ 库的 API。我使用 创建轮子pip wheel,然后运行auditwheel repair以在轮子中包含外部库(我的 C++ 库、pybind11 等)

问题是它想要将 CUDA 运行时和驱动程序库打包到轮子中。理想情况下,我希望将 CUDA 安装留给用户,而不是必须将其包含在 python 轮中(我什至不确定它的可再发行性如何)。

有谁知道一种将 cuda 库列入黑名单的方法吗auditwheel repair?或者也许还有另一种更好的方法?

python pypi python-manylinux

8
推荐指数
1
解决办法
893
查看次数

使用 manylinux + auditwheel 打包 pip 轮子 vs. Conda

描述

所以我希望打包一个需要科学库的相当复杂的 python 应用程序。这个问题有点类似于stackoverflow pip vs conda 的讨论,但它没有详细介绍自 2016 年以来 linux 轮子的二进制打包可用的差异。 我已经看到pypi/cryptography使用 manylinux 并通过 pypi 轮子分发二进制文件。另一个包 mpi4py 只发布 conda 的二进制包,只是因为困难。甚至可以说二元轮不适合这项任务。

通过轮子共享库打包与 conda 相比是什么样的?截至 2018 年,通过轮子共享库打包是否值得?

要求

我的包裹需要

  • 开放式
  • fftw3
  • openmpi

我的所有静态二进制文件大约为 100Mb,因此它确实需要很多共享库。许多我还指出,即使对我自己来说,安装也是一种巨大的痛苦......我无法想象尝试自己安装它的人会是什么样子。到目前为止,我有一个可用的 docker 容器。

python conda python-wheel python-manylinux conda-build

7
推荐指数
0
解决办法
451
查看次数

PIP安装程序中manylinux1与manylinux2020轮文件之间的区别

我在 Python 中遇到一个奇怪的问题,问题是cryptography-2.9.2-cp35-abi3-manylinux2010_x86_64.whl在 SLES 操作系统上不起作用。

我将 CI/CD 添加到我的存储库中,当我将包从requirements.txt 下载到本地文件夹时dist-packages。Jenkins Slave 机器在 RedHat Linux 上运行。因此,它是用这个文件下载的,cryptography-2.9.2-cp35-abi3-manylinux2010_x86_64.whl而我的运行时是在 SLES OS 11 中,这需要cryptography-2.9.2-cp35-abi3-manylinux1_x86_64.whl.

这个特定的依赖项cryptography-2.9.2-cp35-abi3-manylinux2010_x86_64.whl是从 RedHat 下载的,当我将其重新分发到 SLES 操作系统时,此依赖项失败并出现以下错误。

 ERROR: Could not find a version that satisfies the requirement cryptography>=2.1.4 (from azure-identity->-r requirements.txt (line 2)) (from versions: none)
    ERROR: No matching distribution found for cryptography>=2.1.4 (from azure-identity->-r requirements.txt (line 2))
Run Code Online (Sandbox Code Playgroud)

如果我将依赖项名称更改为 ,cryptography-2.9.2-cp35-abi3-manylinux2010_x86_64.whlcryptography-2.9.2-cp35-abi3-manylinux1_x86_64.whl它在 SLES OS 计算机上工作正常。

当我签入 PyPI https://pypi.org/project/cryptography/#modal-close时(这两个文件大小相同,但哈希值不同)

我想了解python包中manylinux1_x86_64与manylinux2010_x86_64之间的区别。

提前致谢。

python pip python-wheel python-manylinux

7
推荐指数
1
解决办法
7886
查看次数

Wheel 取决于构建时的 numpy 版本

我正在尝试构建一个 python 扩展,它使用 numpy C-API 来操作 numpy 数组。在设置部署链时,我遇到了一个问题。

在我requirements.txtsetup.py我中添加了依赖项numpy>=1.7,因为我正在使用该版本中引入的 API 功能。我正在quay.io/pypa/manylinux1_x86_64docker 镜像中造轮子。在图像内,我正在使用安装我的要求pip。这将安装numpy==1.14,因为这是当前版本,与我的依赖项匹配。

mypackage-xxx-manylinux_x84_64.whl但是,当我在 ubuntu 机器(有 numpy )上安装时1.8,在导入包时收到以下错误

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
RuntimeError: module compiled against API version 0xc but this version of numpy is 0x9
---------------------------------------------------------------------------
ImportError
[...]    
ImportError: numpy.core.multiarray failed to import
Run Code Online (Sandbox Code Playgroud)

明显的解决方法是我运行pip install -U numpy. 但是,我不想告诉我的包的每个用户如果他们的 numpy 库是<1.14(即使它符合我的依赖项要求),则手动运行此命令。与此建议相关的几个问题(例如12)。我是从软件包开发人员的角度在这里问的。首先我可以做什么来防止这种情况发生?

这里的最佳实践是什么?我是否应该专门添加 的依赖项numpy >= …

numpy pip python-wheel python-manylinux

5
推荐指数
1
解决办法
1023
查看次数

标签 统计

python-manylinux ×4

python ×3

python-wheel ×3

pip ×2

conda ×1

conda-build ×1

numpy ×1

pypi ×1