我正在使用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不兼容,还是我犯了个人错误(比如缺少库等)。
答案 0 :(得分:2)
答案 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模块。在另一种情况下,你不是。而且你没有。