-1

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

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

4

1 回答 1

2

我已经为 python 2.7 编译了 fann。
你可以从这里下载:https ://github.com/jacekm-git/pyfann_python2.7_windows

编译步骤:

1. Swig 安装:

  • 下载:sourceforge.net/projects/swig/files/swigwin/
  • 将文件解压到 C:\swigwin\
  • 编辑系统路径变量
    • 右键单击 MyComputer -> 属性
    • “高级”选项卡->“环境变量”
    • 编辑“路径”变量 -> 在行尾添加“;C:\swigwin\;C:\python27\;C:\python27\Scripts\”。

2. Microsoft Visual C++ Studio 2008 Express:

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

3.范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.设置.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\

于 2014-11-11T13:38:47.693 回答