[PYTHON] Installieren Sie cvxopt auf 64-Bit-Anaconda

Überblick

Ich hatte große Probleme beim Versuch, cvxopt auf der 64-Bit-Version von Anaconda unter Windows zu installieren, daher werde ich den Arbeitsinhalt zusammenfassen.

In der cvxopt-Dokumentation wird beschrieben, wie Sie es unter Windows installieren (http://cvxopt.org/install/index.html#building-cvxopt-for-windows). Beachten Sie jedoch, dass anscheinend die 32-Bit-Version von Python angenommen wird und laut Dokument nicht reibungslos installiert werden kann. Dieser Artikel fasst die Änderungen zusammen, die gemäß diesem Dokument vorgenommen werden müssen.

Angenommene Umgebung

Es wird davon ausgegangen, dass diese bereits installiert sind.

Darüber hinaus sind die nachfolgenden Arbeiten in einem eigenen Verzeichnis durchzuführen. Wenn Sie dies beispielsweise in D: \ glpk tun möchten, können Sie die Eingabeaufforderung wie folgt öffnen. 84CEE4CD-2BB7-40D7-B2EA-4A2596B8E1A2.png

Abhängige Bibliotheksvorbereitung

Dies kann gemäß Dokumentation erfolgen.

BLAS Laden Sie die [BLAS-Quelldatei] herunter (http://www.netlib.org/blas/blas.tgz). Führen Sie dann den folgenden Befehl an der Eingabeaufforderung aus.

$ tar -xvf blas.tgz
$ cd BLAS-3.5.0
$ sed 's/_LINUX/_WIN/' make.inc -i
$ make && cp blas_WIN.a ../libblas.a
$ cd ..

Der Verzeichnisname in der zweiten Zeile ändert sich jedoch je nach Version der erfassten BLAS-Quelldatei. Ersetzen Sie ihn daher entsprechend.

LAPACK Laden Sie [LAPACK-Quelldatei] herunter (http://www.netlib.org/lapack/lapack-3.5.0.tgz). Führen Sie dann den folgenden Befehl an der Eingabeaufforderung aus.

$ tar -xvf lapack-3.5.0.tgz
$ cd lapack-3.5.0
$ cp make.inc.example make.inc
$ make lapacklib && cp liblapack.a ..
$ cd ..

Wenn Ihnen mitgeteilt wird, dass "libquadmath-0.dll" nicht vorhanden ist, laden Sie es von hier und "MinGW / bin" herunter Platzieren Sie es in (es scheint standardmäßig C: \ MinGW \ bin` zu sein) und führen Sie dann den obigen Befehl aus.

CVXOPT kompilieren

Ab hier ist die Produktion. Laden Sie [CVXOPT-Quelldatei] herunter (http://cvxopt.org/download). Führen Sie dann den folgenden Befehl an der Eingabeaufforderung aus. Der Dateiname und der Ordnername ändern sich je nach Version. Lesen Sie sie daher entsprechend.

$ tar -xvf cvxopt-1.1.8.tar.gz
$ cd cvxopt-1.1.8/src

Öffnen Sie setup.py und

Bearbeiten Sie als Nächstes das Modul "cygwinccompiler" des Pakets "distutils". Wenn sich Anaconda in c: \ Anaconda befindet, öffnen Sie c: \ Anaconda \ Lib \ distutils \ cygwinccompiler.py. Wenn diese Datei eine Zeichenfolge "-mno-cygwin" enthält, löschen Sie diese. (Nicht in meiner Umgebung)

Erstellen von libpython27.a und libmsvcr90.a

Die statischen Linux-Bibliotheken "libpython27.a" und "libmsvcr90.a", die für die spätere Verarbeitung erforderlich sind, werden nicht standardmäßig vorbereitet, sodass sie aus den Bibliotheken für Windows konvertiert werden.

Installieren Sie zunächst das Konvertierungstool.

$ mingw-get install pexports

Kopieren Sie anschließend "python27.dll" und "msvcr90.dll" im Anaconda-Verzeichnis (z. B. "c: \ Anaconda") in das Verzeichnis, in dem sich die setup.py von cvxopt befindet.

Führen Sie den folgenden Befehl aus, um "libpython27.a" zu erstellen.

$ pexports python27.dll > python27.def
$ dlltool --dllname python27.dll --def python27.def --output-lib libpython27.a

Das Erstellen von "libmsvcr90.a" ist etwas komplizierter. Zuerst,

$ pexports msvcr90.dll > msvcr90.def

Führen Sie die resultierende Datei "msvcr90.def" mit einem Texteditor aus und öffnen Sie sie. Und es ist in der Nähe der 304. bis 314. Linie,

--Ändern Sie die Zeile _decode_pointer in; _decode_pointer --Ändern Sie die Zeile _encode_pointer in; _encode_pointer

Richtig. danach,

dlltool --dllname msvcr90.dll --def msvcr90.def --output-lib libmsvcr90.a

Wird ausgeführt. Kopieren Sie die fertigen Dateien "libpython27.a" und "libmsvcr90.a" in den Ordner "libs" von Anaconda. Wenn sich zu diesem Zeitpunkt "python27.lib" im Verzeichnis "libs" befindet, ändern Sie es in "python27.lib_".

Änderung des Quellcodes

Wenn der ursprüngliche Quellcode verwendet wird, tritt ein Fehler auf, sodass die folgende Datei geändert werden muss.

src/C/cholmod.c In der Nähe der 31. Linie

cholmod.c


/* defined in pyconfig.h */
#if (SIZEOF_INT < SIZEOF_LONG)
#define CHOL(name) cholmod_l_ ## name
#else
#define CHOL(name) cholmod_ ## name
#endif

Zu

cholmod.c


/* defined in pyconfig.h */
// #if (SIZEOF_INT < SIZEOF_LONG)
#define CHOL(name) cholmod_l_ ## name
// #else
// #define CHOL(name) cholmod_ ## name
// #endif

Korrigiert auf.

src/C/SuiteSparse/SuiteSparse_config/SuiteSparse_config.h Löschen Sie den folgenden Code in der Nähe von Zeile 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 In der Nähe der Linie 27,

amd.c


#if (SIZEOF_INT < SIZEOF_LONG)
#define amd_order amd_l_order
#define amd_defaults amd_l_defaults
#endif

Zu

amd.c


//#if (SIZEOF_INT < SIZEOF_LONG)
#define amd_order amd_l_order
#define amd_defaults amd_l_defaults
//#endif

Korrigiert auf.

Kompilieren und installieren

Zu diesem Zeitpunkt können Sie schließlich mit dem folgenden Befehl kompilieren.

$ python setup.py build --compiler=mingw32

Erstellen Sie zur Installation distutils.cfg in Lib / distutils von Anaconda und geben Sie den folgenden Inhalt ein.

distutils.cfg


[build]
compiler=mingw32

Dann installieren Sie es.

$ python setup.py install

Recommended Posts

Installieren Sie cvxopt auf 64-Bit-Anaconda
Installieren Sie Anaconda unter Windows 10
Installieren Sie cvxpy unter Windows, Anaconda
Installieren Sie das Modul auf Anaconda (Mac)
Installieren Sie anaconda auf dem Mac → Bibliothek hinzufügen
Python2.7-Installation in einer Windows 32-Bit-Umgebung
Installieren Sie Python 3.7 Anaconda auf dem MAC, aber Python 2
Installieren Sie PyStan unter Windows ohne Anaconda
Theano auf Anaconda
Installieren Sie das 64-Bit-Betriebssystem (Bate) auf Raspberry Pi
Installieren Sie CVXOPT, NumPy, SciPy auf Travis CI
Installieren Sie Docker-Compose unter 64-Bit-Raspberry-Pi-Betriebssystem
Installieren Sie Ubuntu auf einem 32-Bit-UEFI-Ultra-Notebook
Installieren Sie anaconda trotzdem auf einem neuen Mac
Persönliches Notizpaket zur Installation auf Anaconda
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
[Python] So installieren Sie OpenCV unter Anaconda [Windows]
Installieren Sie die 64-Bit-Version von Ubuntu 20.04 LTS (Server) auf RaspberryPi3B +
So installieren / überprüfen Sie graphviz unter anaconda / windows10
Installieren Sie Mecab auf Marvericks
Installieren Sie Tensorflow auf dem Mac
Installieren Sie TensorFlow unter Ubuntu
Installieren Sie Python auf der WSL
Installieren Sie Faiss unter CentOS 7
Installieren Sie pyenv auf dem Mac
Installieren Sie pip auf Mavericks
Installieren Sie Python auf Pidora.
Installieren Sie mongodb auf termux
Installieren Sie Scrapy auf Python3
Installieren Sie Docker auf Fedora31
Installieren Sie numba unter CentOS 7.2
Installieren Sie Ansible auf einem Mac
Installieren Sie Python auf dem Mac
Installieren von Python 3 in einer Mac-Umgebung
Installieren Sie Plone (4.3.6) unter MacOSX (10.10.3)
Installieren Sie PySide2 unter Ubuntu
Installieren Sie Python3.4 unter CentOS 6.6
Anaconda kann nicht installiert werden!
Installieren Sie gensim auf Marvericks
Installieren Sie JModelica unter Ubuntu
Anaconda auf Windows Terminal
Installiere numpy auf Marvericks
Installieren Sie Python unter Windows
Installieren Sie enebular-agent in Chrome Book
Installieren Sie pycuda unter Windows10
Installieren Sie mecab-python unter CentOS
Installieren Sie Python 2.7.3 unter CentOS 5.4
Installieren Sie aws-cli auf MacPorts
Installieren Sie pygraphviz unter Windows 10
Installieren Sie Docker unter AWS
Installieren Sie Python 3.3 unter Ubuntu 12.04
Installieren Sie Chainer 1.5.0 unter Windows
Installieren Sie Python 3.4 auf einem Mac
Installieren Sie Caffe auf dem Mac
Installieren Sie Theano unter Ubuntu 12.04
Installieren Sie pyenv unter OSX
Installieren Sie Mecab auf dem Mac
Installieren Sie awscli auf centos7
Installiere angr unter Ubuntu 18.04
Installieren Sie Chainer unter CentOS 6.7