如何使用cython将多个python文件编译成一个唯一的共享库文件?

时间:2017-06-22 16:26:18

标签: python python-2.7 shared-libraries cython

我想编译一些python库,我用python写入一个so文件。文件夹结构如下所示:

src/
    main.py
    packages/
        lib1.py
        lib2.py
        lib3.py
        lib4.py
        ...
        __init__.py

__init__.py是一个空白文件)

在设置中我得到了类似的东西:

cythonize(["src/packages/*.py"])
compile = "gcc -shared -Os -I /usr/include/python2.7 -L /usr/lib/python2.7/config-x86_64-linux-gnu -o packages.so -fPIC src/packages/lib1.c src/packages/lib2.c ... src/packages/__init__.c -lpthread -ldl -lpython2.7"
os.system(compile)

通过这种方式,我得到了文件packages.so。但是当我在python中导入它时,我在尝试使用我的函数时遇到错误,python说他们不在那里。

使用:

import packages
print dir(packages)

打印:

['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__test__']

显示文件中不存在我的功能。但是,如果我在__init__.py中添加了一些功能,则会使用dir显示该功能。我尝试在import lib1文件中导入其他模块(from lib1 import *__init__.py)并且无效。我没有想法:c。

我做错了什么?有没有办法将它放在一个文件上,还是我必须用10个so文件分发我的程序?

0 个答案:

没有答案