我搜索了很多关于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吗?
答案 0 :(得分:0)
最后我找到了答案。
在包文件夹中,python不接受__init__.so
,它需要__init__.py
个文件