在 CentOS Because it comes with it Python 版本比較舊,So install the higher version Python But at the same time, the requirement cannot affect the original python3 命令.
先不急著動手,You can first take a look at the topic on multi-version.
It is highly not recommended to directly overwrite the current system python 和 python3 命令,Python There are some incompatibility issues between each version,處理起來非常麻煩,In case the system is used,就是個大問題.
Building Python:
make installcan overwrite or masquerade thepython3binary.make altinstallis therefore recommended instead ofmake installsince it only installsexec_prefix/bin/pythonversion.
If you want it to install to, for example, /usr/bin instead of the default (/usr/local/bin in ubuntu/debian), then instead of ./configure, type ./configure --prefix=/usr when told to use it in the guide.
For in your $HOME/bin directory, use --prefix=$HOME.
If it doesn’t exist, add $HOME/bin to your $PATH like this:
$ export PATH=$HOME/bin:$PATH
This may already be in your .bashrc in ubuntu, and others. If it is, when you next log in, $HOME/bin will be added to your $PATH automatically.
Let’s take a look at the generated Makefile!
First, the install target:
install: altinstall bininstall maninstall
It does everything altinstall does, along with bininstall and maninstall
Here’s bininstall; it just creates the python and other symbolic links.
# Install the interpreter by creating a symlink chain:
# $(PYTHON) -> python2 -> python$(VERSION))
# Also create equivalent chains for other installed files
bininstall: altbininstall
-if test -f $(DESTDIR)$(BINDIR)/$(PYTHON) -o -h $(DESTDIR)$(BINDIR)/$(PYTHON); \
then rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \
else true; \
fi
(cd $(DESTDIR)$(BINDIR); $(LN) -s python2$(EXE) $(PYTHON))
-rm -f $(DESTDIR)$(BINDIR)/python2$(EXE)
(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python2$(EXE))
... (More links created)
And here’s maninstall, it just creates “unversioned” links to the Python manual pages.
# Install the unversioned manual pages
maninstall: altmaninstall
-rm -f $(DESTDIR)$(MANDIR)/man1/python2.1
(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python2.1)
-rm -f $(DESTDIR)$(MANDIR)/man1/python.1
(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python2.1 python.1)
TLDR: altinstall skips creating the python link and the manual pages links, install will hide the system binaries and manual pages.
一般在 /usr/bin/ Drop a link,鏈接到 /usr/local/bin/ 下面:
$ ln -s /usr/local/bin/pip /usr/bin/pip
$ ln -s /usr/local/bin/pip3 /usr/bin/pip3
$ ln -s /usr/local/bin/pip3.9 /usr/local/bin/pip3
Login to your CentOS 8 / CentOS 7 system as root or user with sudo privileges.
Then do system update
sudo yum -y install epel-release
sudo yum -y update
Reboot after the upgrade before you continue to install dependencies
sudo reboot
Install required software development tools required to build Python 3.9 on CentOS 8 / CentOS 7:
sudo yum groupinstall "Development Tools" -y
sudo yum install openssl-devel libffi-devel bzip2-devel -y
Confirm gcc is available:
$ gcc --version
gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Ensure wget is installed:
sudo yum install wget -y
Use wget to download the latest Python 3.9 release.
wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz
Extract the archive file using tar:
tar xvf Python-3.9.10.tgz
Switch to the directory created from the file extraction:
cd Python-3.9*/
Run the command below to configure Python installation.
./configure --enable-optimizations
Build Python 3.9 on CentOS 8 / CentOS 7:
sudo make altinstall # altinstall is important, DO NOT use `make install`.
Python 安裝時
make install和make altinstall的區別: altinstall skips creating the python link and the manual pages links.altinstall跳過創建 Python Actions for links and man page links.如果使用make install,There will be two different versions in the system Python 在/usr/bin目錄中,This will cause many problems.
Be patient as this takes quite some time depending on number of CPU cores in your system.
Check Python 3.9 installation on CentOS 8 / CentOS 7. Run below command to confirm successful installation of Python 3.9 on CentOS 8 / CentOS 7:
$ python3.9 --version
Python 3.9.10
Pip3.9 must have been installed as well:
$ pip3.9 --version
pip 21.2.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
Upgrade pip
$ /usr/local/bin/python3.9 -m pip install --upgrade pip
$ pip3.9 --version