在debian下编译的python文件与ubuntu兼容

时间:2018-04-14 00:48:39

标签: python linux nuitka

我正在使用nuitka来编译我的python代码。我使用--module选项将我的代码导入其他python文件中:

nuitka --module --recurse-none file.py
Output: file.so

如果我不需要导入代码而只需要在终端上运行,我就会按照常规编译流程进行操作:

nuitka --recurse-none file.py
Output: file.exe

我在Debian下编译这些文件,它们在Debian下没有问题。当我将这些文件移动到Ubuntu系统时,我有时会出现Segmentation Fault错误。是因为Debian下的编译python代码与Ubuntu不兼容,还是我犯了个人错误(比如缺少库等)。

3 个答案:

答案 0 :(得分:2)

正如abarnert所述,如果您想使您的可执行文件独立于您设备上的特定python安装,则需要使用--standalone选项。

您可以在Nuitka Manual

中查看该信息

答案 1 :(得分:1)

动态链接

来自文档,

  

它将Python转换为C级程序,然后使用" libpython"以与CPython相同的方式执行。

您是否安装了libpython并指向与您编译的版本相同的版本?例如,在arch:

$ whereis libpython
libpython: /usr/lib/libpython3.so

显示我已安装libpython并且属于python 3.x(在路径末尾注意3)。

静态链接。

另一种方法是我猜其他人建议,即使用--standalone选项。这应该避免需要libpython

答案 2 :(得分:0)

我有点怀疑你的问题是否正确。 *.exe通常是Windows可执行文件,而*.so是UNIX / Linux可重新加载模块。在没有深入研究手册的情况下,我注意到在一个例子中你有--module并且你肯定会得到一个Linux模块。在另一种情况下,你不是。而且你没有。