在Windows下构建FANN Python绑定

时间:2014-05-02 10:55:53

标签: python windows fann

我尝试通过 python setup.py install 为FANN编译python绑定(pyfann)。安装了Visual Studio 2010和SWIGWIN后,我遇到了几个错误。

在Windows 7和/或8下有没有人为Python 2.7编译python绑定的预编译版本?我也尝试了一个pyfann under windows,但是_libfann.pyd的构建中止了。

1 个答案:

答案 0 :(得分:2)

我为python 2.7编译了fann 您可以从此处下载:https://github.com/jacekm-git/pyfann_python2.7_windows

编译步骤:

1。 Swig安装:

  • 下载:sourceforge.net/projects/swig/files/swigwin /
  • 将文件解压缩到C:\ swigwin \
  • 编辑系统路径变量
    • rigth click MyComputer - >特性
    • “高级”标签 - > “环境变量”
    • 编辑“路径”变量 - >在行尾添加“; C:\ swigwin \; C:\ python27 \; C:\ python27 \ Scripts \”。

2。 Microsoft Visual C ++ Studio 2008 Express:

  • 下载并安装:go.microsoft.com/?linkid=7729279

3。 Fann 2.1

4。编译fanndoubled.dll

  • 在Visual C ++ Studio 2008中打开C:\ fann \ MicrosoftWindowsDll \ windll.vcproj
  • 构建 - >建立windll
  • 将文件fanndoubled.dll,fanndoubled.lib复制到C:\ fann \ python \ pyfann

5。痛饮

  • 打开命令提示符

    cd c:\fann\python\pyfann\
    swig -c++ -python pyfann.i
  • 在Visual C ++ Studio 2008 C:\ fann \ python \ pyfann.wrap.cxx中打开
    • 查找行(ctrl + f):SWIGINTERN PyObject * _wrap_training_data_parent_create_train_from_callback


    SWIGINTERN PyObject *_wrap_training_data_parent_create_train_from_callback(PyObject*SWIGUNUSEDPARM(self), PyObject *args) {
      PyObject *resultobj = 0;
      FANN::training_data *arg1 = (FANN::training_data *) 0 ;
      unsigned int arg2 ;
      unsigned int arg3 ;
      unsigned int arg4 ;
      void (*arg5)(unsigned int,unsigned int,unsigned int,fann_type *,fann_type *) = (void (*)(unsigned int,unsigned int,unsigned int,fann_type *,fann_type *)) 0 ;
      // .... rest of file ...

更改为:



    typedef void (__stdcall *arg5_fn)(unsigned int, unsigned int, unsigned int, fann_type*, fann_type*); // added line 
    SWIGINTERN PyObject *_wrap_training_data_parent_create_train_from_callback(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
      PyObject *resultobj = 0;
      FANN::training_data *arg1 = (FANN::training_data *) 0 ;
      unsigned int arg2 ;
      unsigned int arg3 ;
      unsigned int arg4 ;
      /* void (*arg5)(unsigned int,unsigned int,unsigned int,fann_type *,fann_type *) = (void (*)(unsigned int,unsigned int,unsigned int,fann_type *,fann_type *)) 0 ;*/
      arg5_fn arg5= (arg5_fn)NULL; // added line
      // ....

6。 setup.py

  • 在编辑器C:\ fann \ python \ pyfann \ setup.py
  • 中打开
  • 查找和评论专栏:


    # swig_cmd = 'swig -c++ -python pyfann/pyfann.i'
    # print 'Running SWIG before:', swig_cmd
    # os.system(swig_cmd)

  • 将设置行更改为:


    ext_modules=[Extension('pyfann._libfann',['pyfann/pyfann_wrap.cxx'], 
                            include_dirs=['../src/include'], 
                            # extra_objects=['../src/doublefann.o'], 
                            libraries = ['pyfann/fanndoubled'],
                            define_macros=[("SWIG_COMPILE",None)]
                                ),

7。安装



    cd C:\fann\python\
    python setup.py install
    copy C:\fann\python\pyfann\fanndoubled.dll C:\Python27\Lib\site-packages\pyfann\