直接使用python解释器运行cython扩展?i、 e.“;python test.so“;

直接使用python解释器运行cython扩展?i、 e.“;python test.so“;,python,cython,Python,Cython,我想将main.py编译成main.so,并在linux中使用python解释器运行它,如下所示:“/usr/bin/python main.so” 我该怎么做 到目前为止,运行以官方方式编译的扩展给我以下信息: root@server:~/TEMP# python test.so File "test.so", line 1 SyntaxError: Non-ASCII character '\x8b' in file test.so on line 2,... 您必须将其作为模块执行 p

我想将main.py编译成main.so,并在linux中使用python解释器运行它,如下所示:“/usr/bin/python main.so”

我该怎么做

到目前为止,运行以官方方式编译的扩展给我以下信息:

root@server:~/TEMP# python test.so 
File "test.so", line 1
SyntaxError: Non-ASCII character '\x8b' in file test.so on line 2,...

您必须将其作为模块执行

python -m test

你不能这么直接地执行一个。由于二进制形式的原因,您必须使用以下方法导入它:

python -m test
如果您想使模块成为可执行文件,可以使用cython的“-embed”选项:

cython -embed test.pyx
gcc ...your flags... test.c -o test
./test

感谢这一帮助,但仍然感觉有点脏,我觉得我可以做。/测试并让它自己调用python当您在适当的位置构建扩展模块(比如在某个本地目录中构建沙盒)时,而不是构建并安装它时,首选的方法是什么。当我尝试
python-m package.subpackage.module
(它在本地对应于package/subpackage/module.so)时,它只是说“没有可用于package.subpackage.module的代码对象”。建议的“python-m”给我以下错误:“/usr/bin/python:没有可用于测试的代码对象”