如何在mac上为linux构建cython build_ext



我在macOS上将cython模块构建为so文件,它运行良好。有没有可能在macOS上为linux构建这样的文件?

我目前的解决方案是运行一个安装了必要模块的python容器。然后将当前文件夹装载到容器中的工作目录中,在容器中执行编译。到目前为止,它运行良好,但我正在寻找一个更简单的解决方案,即直接在macOS上编译linux特定的so文件。

似乎很少有需求像我为这个用例所做的那样。在这里发布一个我现在正在做的解决方案,希望它能帮助一些遇到同样问题的人。

通常,我会遇到一个docker容器,其中有一个安装在磁盘上的卷,python代码就放在那里。然后我可以在容器中编译我的python文件,也可以在本地文件中获得编译后的.so文件。

一个命令就可以了。

docker run -it -v $(pwd):/dist python:3.8-buster bash -c "pip3 install Cython==0.29.17 && cythonize -3 -i [YOUR PYTHON CODE ROOT Folder]/*.py" 

您要做的是"交叉编译"。这篇文章试图通过一些(过时的(工具的链接来回答从Mac到Linux进行交叉编译的最佳方法的问题。简而言之,这并不容易,除非有真正令人信服的理由,否则我不会这么做。

有两种工具声称可以让这个过程(稍微?(更容易:

  • OSX交叉:https://github.com/tpoechtrager/osxcross
  • Crosstool NG:http://crosstool-ng.github.io/

但是,我不确定这是否值得付出努力。

最新更新