GCC-9.3.0 und [OpenMPI-3.1.6](https: // s :) wurden in der Umgebung von CentOS 7.3 und GCC-4.8.5 ohne Rootberechtigung als Streuner erstellt Basierend auf //qiita.com/yonedat/items/d4a764a9a527364ac954) möchte ich dieses Mal Python-3.8.5 mit einem Streubau erstellen und mpi4py für die Parallelisierung hinzufügen.
Laden Sie Python, OpenSSL und libffi herunter.
-https://sourceware.org/libffi/ -https://github.com/openssl/openssl -https://www.python.org/downloads/source/
Die diesmal verwendeten Versionen sind libffi-3.3, openssl-1.1.1g und python-3.8.5. Ich könnte Python-3.8.5 erstellen, ohne libffi und OpenSSL vorab zu erstellen, aber beim Piping wird ein OpenSSL-Fehler angezeigt. Wenn Sie nach "pip OpenSSL" usw. suchen, werden Sie verschiedene Dinge finden, aber es scheint, dass Sie eine neue Version von OpenSSL aus Python 3.7 benötigen. Durch die Installation einer neuen OpenSSL kann auch numpy usw. mit pip eingegeben werden, aber mpi4py generiert zum Zeitpunkt von pip den Fehler "ModuleNotFoundError: Kein Modul mit dem Namen'_ctypes '". Dies scheint durch die Installation von libffi gelöst zu werden, aber es scheint einen Fehler zu geben, der nicht mit libffi verknüpft werden kann, wenn Python-3.8.5 so erstellt wird, wie es ist.
Ich habe versucht, OpenSSL mit GCC-9.3.0 zu erstellen, aber aus irgendeinem Grund ist ein Fehler aufgetreten. Deshalb habe ich es vorerst mit dem Standard-GCC-4.8.5 erstellt.
tar xzvf openssl-OpenSSL_1_1_1g.tar.gz
cd openssl-OpenSSL_1_1_1g
./config --prefix=$HOME/tools/OpenSSL-1.1.1g shared zlib enable-tls1_3
make -j 24
make install
Fügen Sie nach der Installation von OpenSSL Folgendes zu .bash_profile hinzu.
PATH=$HOME/tools/OpenSSL-1.1.1g/bin:$PATH
LD_LIBRARY_PATH=$HOME/tools/OpenSSL-1.1.1g/lib:LD_LIBRARY_PATH
Wie bei OpenSSL ist beim Erstellen mit GCC-9.3.0 ein Fehler aufgetreten. Ich denke, es gibt wahrscheinlich ein Problem mit den Pfadeinstellungen, aber ich werde es später betrachten. Lassen Sie es uns vorerst so bauen, wie es mit GCC-4.8.5 ist, das standardmäßig enthalten war.
tar -zxvf libffi-3.3.tar.gz
mv libffi-3.3 libffi_work
cd libffi_work
mkdir build
cd build
../configure --prefix=$HOME/tools/libffi-3.3
make -j 24
make install
Nach Abschluss der Installation von libffi habe ich Folgendes zu .bash_profile hinzugefügt.
export LD_LIBRARY_PATH=$HOME/tools/libffi-3.3/lib64:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$HOME/tools/libffi-3.3/lib/pkgconfig:$PKG_CONFIG_PATH
Wie oben erwähnt, tritt beim Piping nach der Installation von Python ein Fehler auf, wenn Sie OpenSSL und libffi nicht im Voraus installieren. Es scheint jedoch einen Fehler zu geben, den Sie beim Erstellen von Python nicht mit libffi verknüpfen können. Für 4 Dateien ändern von Makefile.pre.in, configure, configure.ac, setup.py im obersten Verzeichnis nach dem Dekomprimieren von Python. Es gab Commits / 62384c971db4a8c309e2a95764f06e7bf601c014). Korrigieren Sie diese und speichern Sie sie durch Überschreiben. Installieren Sie danach wie folgt.
tar Jxfv Python-3.8.5.tar.xz
mv Python-3.8.5 py_work
cd py_work
mkdir build
cd build
../configure --prefix=$HOME/tools/Python-3.8.5 --enable-shared --with-openssl=$HOME/tools/OpenSSL-1.1.1g --with-ensurepip LDFLAGS=-Wl,-rpath,$HOME/tools/Python-3.8.5/lib CC=$HOME/tools/gcc-9.3.0/bin/gcc CPP=$HOME/tools/gcc-9.3.0/bin/cpp CPPFLAGS="-I$HOME/tools/gcc-9.3.0/include -I$HOME/tools/OpenSSL-1.1.1g/include -I$HOME/tools/libffi-3.3/include"
make j 36
make install
Fügen Sie nach Abschluss der Installation Folgendes zu .bash_profile hinzu.
PYTHON_HOME=$HOME/tools/Python-3.8.5
PYTHONPATH=$PYTHON_HOME/lib/python3.8/site-packages
PATH=$PYTHON_HOME/bin:$PATH
export PYTHON_HOME PYTHONPATH PATH
Ich habe einen symbolischen Link wie unten gezeigt erstellt.
cd ~/bin/
ln -s ~/tools/Python-3.8.5/bin/python3.8 python38
Versuchen Sie auch, numpy und mpi4py hinzuzufügen.
cd ~/tools/Python-3.8.5/bin
pip3 install numpy
pip3 install mpi4py
Mit dem oben genannten kann Python-3.8.5 basierend auf GCC-9.3.0 und OpenMPI-3.1.6 mit einem Streubau erstellt werden. Numpy und mpi4py scheinen vorerst problemlos zu funktionieren.
Recommended Posts