无法在 python 中导入 cython 生成的 .so

unable to import cython generated .so in python

我搜索了很多关于ImportError: No module named错误的讨论,但似乎没有人能解决我的问题,所以请允许我再问一次。

这是我的包文件夹结构:

/modules
├── build
│   ├── lib.linux-x86_64-2.7
│   │   └── Package
│   │       ├── __init__.so
│   │       ├── SendTraffic.so
│   │       └── Utils.so
│   └── temp.linux-x86_64-2.7
│       └── Package
│           ├── __init__.o
│           ├── SendTraffic.o
│           └── Utils.o
├── Package
│   ├── __init__.py
│   ├── SendTraffic.c
│   ├── SendTraffic.py
│   ├── SendTraffic.pyc
│   ├── Utils.c
│   ├── Utils.py
│   └── Utils.pyc
├── setup.py

和setup.py

from distutils.core import setup
from Cython.Build import cythonize
import os

os.environ['CFLAGS']="-s -O2"

setup(
    name = 'Hello world app',
    ext_modules = cythonize("Package/*.py"),
)

可以成功构建.so文件。但是当我在 /modules/build/lib.linux-x86_64-2.7 下导入它们时:

/modules/build/lib.linux-x86_64-2.7$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information. 
>>> import Package.SendTraffic
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named Package.SendTraffic

在Package文件夹中,我可以成功导入它们:

/modules/build/lib.linux-x86_64-2.7/Package$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import SendTraffic
>>>

我也试过将 /modules/build/lib.linux-x86_64-2.7 添加到 sys.path,但没有用。使用 setup.py install 将它们安装到系统范围的包文件夹中也不起作用。

有人可以帮我导入 Package.SendTraffic 成功吗?

终于找到答案了

包文件夹中,__init__.so不被python接受,需要__init__.py文件