32 位 C++ 与 64 位 Python 之间的软件包不兼容

32 位 C++ 与 64 位 Python 之间的软件包不兼容

我正在做一个项目,需要在 ARM 处理器上编译一个 C++ 包装器,同时还要做一个使用 C++ 包装器的 Python 项目。它运行在装有 64 位 Debian 10 的 Rock Pi E 上。

对于 C++ 包装器,因为我必须使用的库之一仅适用于 ARM 架构的 32 位,并且我无法重新编译它,所以我必须使用它g++:armhf来编译我的项目,因为我不能有一个混合 32 位和 64 位的项目。

另一方面,我在 python 中使用了这个包装器。我也用 安装了 32 位版本python:armhf。我可以毫无问题地使用ctypesCDLL

我当前的问题发生在我尝试安装 python 模块时。因为我必须使用 pip,但是当我尝试使用 安装它时apt,它只能在 64 位中找到它,这会覆盖 g++ 和 python 到 arm64。当我尝试使用 将 pip 强制为 ARM32 时python3-pip:armhf,它只说它在某处被引用,但我找不到在哪里。

我看到了MSL——加载库可以让我有机会使用我的在我的 64 位 Python 脚本中编译了 32 位库,但是它需要一些 apt 无法找到的包,例如libgfortran3

据我所知,让它工作的最佳方法是找到一种pip3在 32 位中安装的方法,并希望我使用的模块也兼容 32 位。

我认为另一种方法是让 MSL-loadlib 工作。但我需要一种方法来同时g++:armhf编译安装的 c++ 和python,这似乎不可能。g++:arm64

我是否缺少了某些可以实现这一点的东西?

根据我的理解和一些评论告诉我的内容,我可能不得不询问并等待阻止我的 32 位库的更新版本。

答案1

pip 本身是纯 Python(setuptools 也是),所以它没有 32 位或 64 位之分。我不确定你是如何安装 32 位 Python 的(或者 Debian 如何处理多架构的东西——假设上游甚至为 Python 做了这件事),但是如果你在任何情况下都找不到以 deb 形式打包的 Python 包(及其依赖项),并且找不到适合你的 32 位 Python 安装的方式/路径,你可以考虑使用确保pip

事实上,如果你利用韦恩一旦创建完成,pip 就可以在虚拟环境中供您使用了。

相关内容