GCC-9.3.0 et [OpenMPI-3.1.6](https: // s :: Basé sur //qiita.com/yonedat/items/d4a764a9a527364ac954), cette fois, je voudrais construire Python-3.8.5 avec une version parasite et ajouter mpi4py pour la parallélisation.
Téléchargez Python, OpenSSL et libffi.
-https://sourceware.org/libffi/ -https://github.com/openssl/openssl -https://www.python.org/downloads/source/
Les versions utilisées cette fois sont libffi-3.3, openssl-1.1.1g et python-3.8.5. Je pourrais construire Python-3.8.5 sans pré-construire libffi et OpenSSL, mais j'obtiens une erreur OpenSSL lors du piping. Si vous recherchez "pip OpenSSL" etc., vous trouverez diverses choses, mais il semble que vous ayez besoin d'une nouvelle version d'OpenSSL de Python 3.7. De plus, en installant un nouvel OpenSSL, numpy etc. peut être entré avec pip, mais mpi4py provoquera une erreur de "ModuleNotFoundError: No module named'_ctypes '" au moment de pip. Cela semble être résolu en installant libffi, mais il semble y avoir un bogue qui ne peut pas être lié à libffi si Python-3.8.5 est construit tel quel.
J'ai essayé de construire OpenSSL avec GCC-9.3.0, mais pour une raison quelconque, j'ai eu une erreur, donc je l'ai construit avec le GCC-4.8.5 par défaut pour le moment.
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
Après avoir installé OpenSSL, ajoutez ce qui suit à .bash_profile.
PATH=$HOME/tools/OpenSSL-1.1.1g/bin:$PATH
LD_LIBRARY_PATH=$HOME/tools/OpenSSL-1.1.1g/lib:LD_LIBRARY_PATH
Comme avec OpenSSL, j'ai eu une erreur en essayant de construire avec GCC-9.3.0. Je pense qu'il y a probablement un problème avec les paramètres de chemin, mais je l'examinerai plus tard. Pour le moment, construisons-le tel quel avec GCC-4.8.5 qui était inclus en standard.
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
Après avoir terminé l'installation de libffi, j'ai ajouté ce qui suit à .bash_profile.
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
Comme mentionné ci-dessus, si vous n'installez pas OpenSSL et libffi à l'avance, une erreur se produira lors du piping après l'installation de Python, mais il semble y avoir un bogue que vous ne pouvez pas lier avec libffi lors de la construction de Python. Modifier pour 4 fichiers de Makefile.pre.in, configurez, configurez.ac, setup.py dans le répertoire supérieur après décompression de Python. Il y avait des commits / 62384c971db4a8c309e2a95764f06e7bf601c014), donc corrigez-le et enregistrez-le en écrasant. Après cela, installez selon la procédure suivante.
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
Une fois l'installation terminée, ajoutez ce qui suit à .bash_profile.
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
J'ai créé un lien symbolique comme indiqué ci-dessous.
cd ~/bin/
ln -s ~/tools/Python-3.8.5/bin/python3.8 python38
Essayez également d'ajouter numpy et mpi4py.
cd ~/tools/Python-3.8.5/bin
pip3 install numpy
pip3 install mpi4py
Avec ce qui précède, Python-3.8.5 basé sur GCC-9.3.0 et OpenMPI-3.1.6 peut être construit avec une construction parasite. Pour le moment, numpy et mpi4py semblent fonctionner sans problème.