J'ai eu beaucoup de mal à essayer d'installer cvxopt sur la version 64 bits de Anaconda sous Windows, je vais donc résumer le travail.
La documentation de cvxopt décrit comment l'installer sous Windows (http://cvxopt.org/install/index.html#building-cvxopt-for-windows). Cependant, veuillez noter qu'il semble que la version 32 bits de Python soit supposée et qu'elle ne puisse pas être installée correctement selon le document. Cet article résume les modifications qui doivent être apportées conformément à ce document.
On suppose que ceux-ci sont déjà installés.
En outre, les travaux ultérieurs seront exécutés dans un répertoire dédié. Par exemple, si vous souhaitez le faire dans D: \ glpk
, vous pouvez ouvrir l'invite de commande en procédant comme suit.
Cela peut être fait selon la Documentation.
BLAS Téléchargez fichier source BLAS. Ensuite, exécutez la commande suivante à partir de l'invite de commande.
$ tar -xvf blas.tgz
$ cd BLAS-3.5.0
$ sed 's/_LINUX/_WIN/' make.inc -i
$ make && cp blas_WIN.a ../libblas.a
$ cd ..
Cependant, le nom du répertoire sur la deuxième ligne change en fonction de la version du fichier source BLAS acquis, remplacez-le comme il convient.
LAPACK Téléchargez fichier source LAPACK. Ensuite, exécutez la commande suivante à partir de l'invite de commande.
$ tar -xvf lapack-3.5.0.tgz
$ cd lapack-3.5.0
$ cp make.inc.example make.inc
$ make lapacklib && cp liblapack.a ..
$ cd ..
Si l'on vous dit que libquadmath-0.dll
n'existe pas, téléchargez-le depuis ici etMinGW / bin Placez-le dans
(il semble être C: \ MinGW \ bin
par défaut), puis exécutez la commande ci-dessus.
De là, c'est la production. Téléchargez Fichier source CVXOPT. Ensuite, exécutez la commande suivante à partir de l'invite de commande. Le nom du fichier et le nom du dossier changent en fonction de la version, alors lisez-les comme il convient.
$ tar -xvf cvxopt-1.1.8.tar.gz
$ cd cvxopt-1.1.8/src
Ouvrez setup.py
et
--Changé l'initialisation de la variable BLAS_LIB autour de la 12ème ligne en BLAS_LIB = ['blas', 'gfortran']
--Changé l'initialisation de la variable BLAS_LIB_DIR autour de la 9ème ligne en `BLAS_LIB_DIR = '.' '
Ensuite, éditez le module cygwinccompiler
du paquet distutils
. Si Anaconda se trouve dans c: \ Anaconda
, ouvrez c: \ Anaconda \ Lib \ distutils \ cygwinccompiler.py
. S'il y a une chaîne -mno-cygwin
dans ce fichier, supprimez-la. (Pas dans mon environnement)
Les bibliothèques statiques Linux libpython27.a
et libmsvcr90.a
, qui sont requises dans le traitement ultérieur, ne sont pas préparées par défaut, elles sont donc converties à partir des bibliothèques pour Windows.
Tout d'abord, installez l'outil de conversion.
$ mingw-get install pexports
Ensuite, copiez «python27.dll» et «msvcr90.dll» dans le répertoire Anaconda (par exemple «c: \ Anaconda») dans le répertoire où se trouve setup.py de cvxopt.
Pour créer libpython27.a
, exécutez la commande suivante.
$ pexports python27.dll > python27.def
$ dlltool --dllname python27.dll --def python27.def --output-lib libpython27.a
La création de libmsvcr90.a
est un peu plus compliquée. Premier,
$ pexports msvcr90.dll > msvcr90.def
Exécutez et ouvrez le résultat msvcr90.def
avec un éditeur de texte. Et c'est près des 304e à 314e lignes,
--Change la ligne _decode_pointer
en; _decode_pointer
--Change la ligne _encode_pointer
en; _encode_pointer
Correct. ensuite,
dlltool --dllname msvcr90.dll --def msvcr90.def --output-lib libmsvcr90.a
Est exécuté. Copiez les fichiers libpython27.a
et libmsvcr90.a
terminés dans le dossier libs
d'Anaconda.
À ce moment-là, s'il y a python27.lib
dans le répertoire libs
, changez-le en python27.lib_
.
Une erreur se produira si le code source d'origine est utilisé, le fichier suivant doit donc être modifié.
src/C/cholmod.c Près de la 31e ligne
cholmod.c
/* defined in pyconfig.h */
#if (SIZEOF_INT < SIZEOF_LONG)
#define CHOL(name) cholmod_l_ ## name
#else
#define CHOL(name) cholmod_ ## name
#endif
À
cholmod.c
/* defined in pyconfig.h */
// #if (SIZEOF_INT < SIZEOF_LONG)
#define CHOL(name) cholmod_l_ ## name
// #else
// #define CHOL(name) cholmod_ ## name
// #endif
Corrigé en.
src/C/SuiteSparse/SuiteSparse_config/SuiteSparse_config.h Supprimez le code suivant près de la ligne 155.
SuiteSparse_config.h
#ifndef NTIMER
#ifdef _POSIX_C_SOURCE
#if _POSIX_C_SOURCE >= 199309L
#define SUITESPARSE_TIMER_ENABLED
#endif
#endif
#endif
src/C/amd.c Près de la ligne 27,
amd.c
#if (SIZEOF_INT < SIZEOF_LONG)
#define amd_order amd_l_order
#define amd_defaults amd_l_defaults
#endif
À
amd.c
//#if (SIZEOF_INT < SIZEOF_LONG)
#define amd_order amd_l_order
#define amd_defaults amd_l_defaults
//#endif
Corrigé en.
À ce stade, vous pouvez enfin compiler avec la commande suivante.
$ python setup.py build --compiler=mingw32
Pour l'installer, créez distutils.cfg
dans Lib / distutils
d'Anaconda et entrez le contenu suivant.
distutils.cfg
[build]
compiler=mingw32
Puis installez-le.
$ python setup.py install
Recommended Posts