-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. スウィッグのインストール:

  • ダウンロード: sourceforge.net/projects/swig/files/swigwin/
  • ファイルを C:\swigwin\ に解凍します
  • システムパス変数を編集
    • 右クリック MyComputer -> プロパティ
    • 「詳細」タブ -> 「環境変数」
    • 「Path」変数を編集 -> 行末に「;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.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\

于 2014-11-11T13:38:47.693 に答える