Sie müssen verschiedene Bibliotheken von Drittanbietern verwenden und möchten Folgendes erreichen:
(Ich möchte VirtualBox verwenden, um Ubuntu auf einem Mac auszuführen und zu experimentieren, um die oben genannten Ziele zu erreichen, um laufende Projekte nicht zu beeinträchtigen.)
Als ersten Schritt werden wir (1) und (2) durchführen.
$ sudo apt update && apt upgrade -y
$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev \
libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
$ apt list --upgradable
$ sudo apt-get install build-essential checkinstall
$ sudo make altinstall
$ python3 --version
Python 3.8.2
#-3.8.0
$ cd /opt
$ sudo wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
$ sudo tar xzf Python-3.8.0.tgz
$ cd Python-3.8.0
$ sudo ./configure --enable-optimizations
$ sudo make altinstall
#-3.6.10
$ cd /opt
$ sudo wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz
$ sudo tar xzf Python-3.6.10.tgz
$ cd Python-3.8.0
$ sudo ./configure --enable-optimizations
$ sudo make altinstall
#(1) Verwenden Sie mehrere Python-Versionen ordnungsgemäß (Python 2.7, 3.6, 3.8 usw.). Sie können sehen, dass Python3 in dieser Phase "Python3.8" (Python 3.8.2) ist. (Ich habe es nachgeschlagen und festgestellt, dass es sich in `/ usr / bin /` befindet.) Als nächstes verlinken Sie aus der Liste unter https://www.python.org/ftp/python/ auf die erforderliche Python-Version. Suchen und verwenden Sie wget zum Herunterladen nach `/ opt /`. Zuerst Python Überprüfen Sie dann das Python-Verzeichnis
$ cd /opt
$ ls -l
total 45884
drwxr-xr-x 18 501 501 4096 May 9 18:33 Python-3.6.10
-rw-r--r-- 1 root root 23019480 Dec 18 14:48 Python-3.6.10.tgz
drwxr-xr-x 18 kohei kohei 4096 May 9 17:48 Python-3.8.0
-rw-r--r-- 1 root root 23949883 Oct 14 2019 Python-3.8.0.tgz
drwxr-xr-x 8 root root 4096 May 8 18:04 VBoxGuestAdditions-6.1.6
$ sudo update-alternatives --install /usr/bin/python python /opt/Python-3.6.10/python 1
$ sudo update-alternatives --install /usr/bin/python python /opt/Python-3.8.0/python 2
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 3
$ update-alternatives --list python
/opt/Python-3.6.10/python
/opt/Python-3.8.0/python
/usr/bin/python3.8
$ sudo update-alternatives --config python
There are 3 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.8 3 auto mode
* 1 /opt/Python-3.6.10/python 1 manual mode
2 /opt/Python-3.8.0/python 2 manual mode
3 /usr/bin/python3.8 3 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
$ cd /usr/bin
$ ls -l pyt*
lrwxrwxrwx 1 root root 24 May 9 18:20 python -> /etc/alternatives/python
lrwxrwxrwx 1 root root 9 May 8 17:33 python3 -> python3.8
-rwxr-xr-x 1 root root 5457536 Apr 27 11:53 python3.8
lrwxrwxrwx 1 root root 33 Apr 27 11:53 python3.8-config -> x86_64-linux-gnu-python3.8-config
lrwxrwxrwx 1 root root 16 Mar 13 08:20 python3-config -> python3.8-config
$ ls -l /etc/alternatives/python
lrwxrwxrwx 1 root root 25 May 9 19:27 /etc/alternatives/python -> /opt/Python-3.6.10/python
$ which python
/usr/bin/python
$ python -V
Python 3.6.10
Sie können sehen, dass / etc / alternatives / python
eine symbolische Verknüpfung zu dem Pfad ist, der dem benutzerdefinierten Python entspricht (in diesem Fall / opt / Python-3.6.10 / python
).
Zusammenfassung,
/ usr / bin / python
wird aufgerufen.Als nächstes aktualisieren Sie pip
, indem Sie die folgenden Schritte ausführen.
#Bestätigung
$ which python
/usr/bin/python
#Bestätigung
$ python -V
Python 3.6.10
$ apt install python3-pip
$ python -m pip install --upgrade pip
$ pip --version
pip 20.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
Von nun an werde ich für jede Python-Version einzeln eine Bibliothek hinzufügen. Das Verfahren ist wie folgt.
#Bestätigung
$ which python
/usr/bin/python
#Bestätigung
$ python -V
Python 3.6.10
$ sudo python -m pip install numpy
Collecting numpy
Downloading https://files.pythonhosted.org/packages/03/27/e35e7c6e6a52fab9fcc64fc2b20c6b516eba930bb02b10ace3b38200d3ab/numpy-1.18.4-cp36-cp36m-manylinux1_x86_64.whl (20.2MB)
100% |████████████████████████████████| 20.2MB 2.3MB/s
Installing collected packages: numpy
Successfully installed numpy-1.18.4
$ sudo python -m pip install scipy
Collecting scipy
Downloading scipy-1.4.1-cp36-cp36m-manylinux1_x86_64.whl (26.1 MB)
|████████████████████████████████| 26.1 MB 5.8 MB/s
Requirement already satisfied: numpy>=1.13.3 in /usr/local/lib/python3.6/site-packages (from scipy) (1.18.4)
Could not build wheels for numpy, since package 'wheel' is not installed.
Installing collected packages: scipy
Successfully installed scipy-1.4.1
#Überprüfen Sie das Ergebnis.
$ python -c 'import sys; print(sys.version); import numpy; print(numpy.__file__); import scipy; print(scipy.__file__)'
3.6.10 (default, May 9 2020, 18:32:23)
[GCC 9.3.0]
/usr/local/lib/python3.6/site-packages/numpy/__init__.py
/usr/local/lib/python3.6/site-packages/scipy/__init__.py
Als Referenz sehen wir uns an, was sich in / usr / local / lib / python3.6 / site-packages /
befindet.
$ ls -l /usr/local/lib/python3.6/site-packages/
total 52
-rw-r--r-- 1 root root 126 May 9 18:34 easy_install.py
drwxr-xr-x 17 root root 4096 May 10 18:45 numpy
drwxr-xr-x 2 root root 4096 May 10 18:45 numpy-1.18.4.dist-info
drwxr-xr-x 2 root root 4096 May 10 18:45 numpy.libs
drwxr-xr-x 5 root root 4096 May 10 18:46 pip
drwxr-xr-x 2 root root 4096 May 10 18:46 pip-20.1.dist-info
drwxr-xr-x 5 root root 4096 May 9 18:34 pkg_resources
drwxr-xr-x 2 root root 4096 May 9 18:34 __pycache__
-rw-r--r-- 1 root root 119 May 9 18:33 README.txt
drwxr-xr-x 23 root root 4096 May 10 18:46 scipy
drwxr-xr-x 2 root root 4096 May 10 18:46 scipy-1.4.1.dist-info
drwxr-xr-x 6 root root 4096 May 9 18:34 setuptools
drwxr-xr-x 2 root root 4096 May 9 18:34 setuptools-40.6.2.dist-info
Als weitere Referenz sehen wir uns an, dass diese Installation von numpy scipy nur Python 3.6.10 betrifft (wie beabsichtigt). Natürlich habe ich Python 3.8.0 nicht berührt, also sieht es so aus:
$ /opt/Python-3.8.0/python -c 'import sys; print(sys.version); import numpy; print(numpy.__file__); import scipy; print(scipy.__file__)'
3.8.0 (default, May 9 2020, 17:47:23)
[GCC 9.3.0]
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
Es ist ein bisschen arrogant, aber das gleiche kann man sehen, wenn man Python durch "Update-Alternativen" wechselt.
$ sudo update-alternatives --config python
[sudo] password for kohei:
There are 3 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.8 3 auto mode
* 1 /opt/Python-3.6.10/python 1 manual mode
2 /opt/Python-3.8.0/python 2 manual mode
3 /usr/bin/python3.8 3 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /opt/Python-3.8.0/python to provide /usr/bin/python (python) in manual mode
kohei@kohei-VirtualBox:~$
kohei@kohei-VirtualBox:~$ which python
/usr/bin/python
kohei@kohei-VirtualBox:~$ python -V
Python 3.8.0
kohei@kohei-VirtualBox:~$
kohei@kohei-VirtualBox:~$ python -c 'import sys; print(sys.version); import numpy; print(numpy.__file__); import scipy; print(scipy.__file__)'
3.8.0 (default, May 9 2020, 17:47:23)
[GCC 9.3.0]
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
kohei@kohei-VirtualBox:~$
Vergessen Sie natürlich nicht, am Ende auf die ursprüngliche Python-Version zurückzugreifen.
kohei@kohei-VirtualBox:~$ sudo update-alternatives --config python
There are 3 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.8 3 auto mode
1 /opt/Python-3.6.10/python 1 manual mode
* 2 /opt/Python-3.8.0/python 2 manual mode
3 /usr/bin/python3.8 3 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /opt/Python-3.6.10/python to provide /usr/bin/python (python) in manual mode
kohei@kohei-VirtualBox:~$ which python
/usr/bin/python
kohei@kohei-VirtualBox:~$ python -V
Python 3.6.10
Recommended Posts