首先,我在 ubuntu-16.04 中使用以下命令创建了 python 脚本的二进制文件:
cython3 --embed -o hello.c hello.py
gcc -Os -I /usr/include/python3.5m -o hello hello.c -lpython3.5m -lpthread -lm -lutil -ldl
但有一些问题我需要讨论:
1-如果我删除 python 脚本,则二进制文件会出现导入错误(从 .py 文件导入)。
2-如果我不删除 .py 文件,那么所有二进制文件都可以完美运行(这完全使二进制文件的创建变得毫无意义)
现在我知道问题是运行文件是二进制文件,并且二进制文件中导入的一些常量和函数来自 .py 脚本。
我的项目代码流程是:
**Main folder**
**Scripts1 Folder**
Script1.py
Script2.py
Script3.py & many other .py scripts...
**Scrip1.1 Folder**
Script1_1.py
Script1_2.py & many .py scripts
**Script2 Folder**
Script1.py
Script2.py & many other .py scripts
有没有什么方法可以执行在创建时包含所有导入常量/函数的二进制文件?
有没有什么方法可以使用 gcc 从 .py 的 .c 代码生成二进制文件,该二进制文件可以在没有任何 .py 脚本的情况下执行?
而且从 .py 脚本导入也不会有问题。
例子:
从脚本1导入函数1
从 script1_2 导入常量
实际上问题是这个导入是从二进制文件中的 python 脚本导入的,我希望从另一个二进制文件中以二进制导入。当我从文件夹中删除 .py 脚本时,错误是“导入错误:无法从 script1 导入 function1。没有这样的文件 script1.py”
提前致谢。