私は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\