我正在尝试使用Cython
和PyInstaller
库将我的项目代码打包成可执行二进制文件。我的代码目录如下所示:
的main.py是从进口逻辑主代码program_a.py和program_b.py。
我成功地将我的program_a和program_b文件转换为可以由任何 python 代码导入的 .so 文件。我通过执行以下脚本来做到这一点。
from distutils.core import setup
from Cython.Build import cythonize
sourcefiles = ['program_a.py', 'program_b.py']
setup(
name = "Hello World",
ext_modules = cythonize(sourcefiles),
)
通过执行 >python setup.py build_ext --inplace我得到.so如下所示的文件
当我运行python main.py它时,它可以完美地与.so文件一起运行。这表明我可以将它们作为模块导入。
现在,我想将二进制 (.so) 文件打包main.py成单个二进制文件。为此,我使用了以下命令pyInstaller
pyinstaller "main.py" --onefile
它实际上在dist/文件夹中提供了一个二进制文件,但我无法导入某些模块并出现以下错误:
Traceback (most recent call last):
File "main.py", line 1, in <module>
import program_a as lisence_checker
File "program_a.py", line 1, in init program_a
ModuleNotFoundError: No module named 'licensing'
[18032] Failed to execute script main
如何将库与 pyinstaller 链接或将库信息嵌入到我的二进制文件中?
我还发现了什么:
使用 PyInstaller 构建 Cython 编译的 python 代码
https://riptutorial.com/cython/example/21982/bundling-a-cython-program-using-pyinstaller
但是所有这些上面的链接都没有在 python 代码示例中使用任何外部包。我能够在没有外部模块的情况下编译代码
慕运维8079593
胡说叔叔
相关分类