我有一个C项目,希望使用SWIG和distutils工具构建python模块(称为CDM)。我已经建立了一个setup.py
文件和一个cdm.i
运行
python3 -m pip install . --user
很好,但是随后在运行的python3控制台中
import CDM
返回
ModuleNotFoundError: No module named 'CDM'
跑步时
import _CDM
_CDM.cdmNewMesh()
工作正常。
我试图跑步
python3 pip list
我在列表中看到CDM模块。
我尝试在_
中删除扩展名中的setup.py
,然后尝试import CDM
返回ImportError: dynamic module does not define module export function (PyInit_CDM)
。
我尝试过使用python2,并且行为相同。
这是cdm.i
%module CDM
%{
typedef void* CDMMesh;
extern CDMMesh cdmNewMesh( void );
%}
typedef void* CDMMesh;
extern CDMMesh cdmNewMesh( void );
这是setup.py
#!/usr/bin/env python
from distutils.core import setup, Extension
module1 = Extension(name = '_CDM',
sources=['src/cdm.i', 'src/CDM_Mesh.c', 'src/CDM_IOTools.c'],
swig_opts=['-py3'])
setup(name='CDM',
version='1.0',
description='CoteDeMailles mesh library',
ext_modules=[module1],
py_modules=['CDM']
)
这是全球项目结构
/
setup.py
|
|
src/
|
|
cdm.i
|
CDM_Mesh.c
|
CDM_IOTools.c
为什么我不能只做import CDM
?我不明白...