Python 如何在swig中使用numpy.i?
我想用SWIG将一些C++代码包到Python,我需要把Nuffy数组发送到C++向量类中进行一些处理。p> 我的问题是,我似乎无法访问swig.I文件中的“numpy.I” 如何导入/包含numpy.I 加上向量iPython 如何在swig中使用numpy.i?,python,c++,arrays,numpy,swig,Python,C++,Arrays,Numpy,Swig,我想用SWIG将一些C++代码包到Python,我需要把Nuffy数组发送到C++向量类中进行一些处理。p> 我的问题是,我似乎无法访问swig.I文件中的“numpy.I” 如何导入/包含numpy.I 加上向量i %module add_vector %{ #define SWIG_FILE_WITH_INIT #include "add_vector.h" %} %include "numpy.i" %init %{ import_array(); %} %inclu
%module add_vector
%{
#define SWIG_FILE_WITH_INIT
#include "add_vector.h"
%}
%include "numpy.i"
%init %{
import_array();
%}
%include std_vector.i
%template(vecInt) std::vector<int>;
%include "add_vector.h"
tester.py
import add_vector as vec
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.empty(len(a))
vec.add(c,a,b)
print('c:', c)
输出:
rm -f *.so *.o *_wrap.* *.pyc *.gch add_vector.py
swig -c++ -python add_vector.i
add_vector.i:7: Error: Unable to find 'numpy.i'
Makefile:2: recipe for target 'all' failed
make: *** [all] Error 1
我在用debian,以防万一
谢谢 将
numpy.i
复制到与add_vector.i
相同的文件夹中
或者使用命令行选项-lifile
并为其提供numpy.i文件的路径
swig -l/path/to/numpy.i ...
有关SWIG命令行选项的列表,请参见你将
numpy.i
文件放在哪里?我想你会想放弃Ubuntu软件包,直接从他们的站点获取一个源代码版本的numpy。@Flexo i刚刚按此处指定的“conda install-c anaconda numpy”重新安装了numpy:但这并没有改变任何事情。仍然没有numpy。除了我的python2.7软件包,我在任何地方都能找到它。如果你的机器上有numpy.i,你能告诉我你在键入“查找numpy.i”时看到了什么吗?@Flexo解决了!请参阅Jonathan答案下的第二条评论。这可以消除我发布的错误(谢谢!),但我唯一的numpy.I文件来自python2.7包,它不能正常工作。我不知道为什么,但是numpy。我没有带pyhton3.7.3包,我不知道如何获得它。解决方法:找到您正在运行的numpy版本,然后转到此处()下载numpy-[your_version].zip文件,然后专门复制numpy.I文件,在numpy-[your_version]/tools/swig/中找到。现在将numpy.i粘贴到您的项目工作目录中。
swig -l/path/to/numpy.i ...