一、背景
openEuler-22.03-LTS 系统,默认的python版本为3.x ,python命令为 python3,python 这个命令没有被占用。
在openEuler如果要执行python脚本,需要显式地用 python file.py 执行。
有时候,有一些基于python2.x的程序需要运行在openEuler-22.03-LTS 上,怎么办?
在openEuler-22.03-LTS上编译一个 python2.x。
二、openEuler-22.03-LTS python3环境
# rpm -qa | grep python
python3-libselinux-3.3-1.oe2203.x86_64
python3-idna-3.2-1.oe2203.noarch
python3-libsemanage-3.3-3.oe2203.x86_64
python3-setools-4.4.0-2.oe2203.x86_64
python3-pyserial-3.5-2.oe2203.noarch
python3-wcwidth-0.2.5-1.oe2203.noarch
python3-prettytable-2.4.0-1.oe2203.noarch
python3-pyyaml-6.0-1.oe2203.x86_64
python3-pytz-2021.3-1.oe2203.noarch
python3-pysocks-1.7.1-1.oe2203.noarch
python3-urllib3-1.26.7-2.oe2203.noarch
python-setuptools-59.4.0-3.oe2203.noarch
python3-pyparsing-3.0.6-1.oe2203.noarch
python-pip-wheel-21.3.1-1.oe2203.noarch
python3-setuptools-59.4.0-3.oe2203.noarch
python3-3.9.9-7.oe2203.x86_64
python3-dbus-1.2.18-2.oe2203.x86_64
python3-six-1.16.0-1.oe2203.noarch
python3-unbound-1.13.2-3.oe2203.x86_64
python3-configobj-5.0.6-17.oe2203.noarch
python3-dateutil-2.8.2-2.oe2203.noarch
python3-linux-procfs-0.6.3-1.oe2203.noarch
python3-pyudev-0.22.0-2.oe2203.noarch
python3-cairo-1.20.0-1.oe2203.x86_64
python3-rpm-4.17.0-8.oe2203.x86_64
python3-decorator-5.0.9-1.oe2203.noarch
python3-distro-1.6.0-1.oe2203.noarch
python3-libcomps-0.1.18-1.oe2203.x86_64
python3-nftables-1.0.0-1.oe2203.x86_64
python3-perf-5.10.0-60.18.0.50.oe2203.x86_64
python3-schedutils-0.6-7.oe2203.x86_64
python3-gobject-base-3.42.0-2.oe2203.x86_64
python3-firewall-1.0.2-2.oe2203.noarch
python3-gobject-3.42.0-2.oe2203.x86_64
python3-sssd-2.6.1-1.oe2203.x86_64
python3-libdnf-0.65.0-2.oe2203.x86_64
python3-hawkey-0.65.0-2.oe2203.x86_64
python3-gpgme-1.16.0-1.oe2203.x86_64
python3-dnf-4.10.0-3.oe2203.noarch
python3-dnf-plugins-core-4.0.24-3.oe2203.noarch
python3-babel-2.9.1-1.oe2203.noarch
python3-pyrsistent-0.18.0-1.oe2203.x86_64
python3-ply-3.11-2.oe2203.noarch
python3-pycparser-2.21-1.oe2203.noarch
python3-cffi-1.15.0-1.oe2203.x86_64
python3-netifaces-0.10.9-1.oe2203.x86_64
python3-markupsafe-2.0.1-2.oe2203.x86_64
python3-jinja2-3.0.3-1.oe2203.noarch
python3-jsonpointer-2.2-1.oe2203.noarch
python3-jsonpatch-1.32-1.oe2203.noarch
python3-charset-normalizer-2.0.8-1.oe2203.noarch
python3-chardet-4.0.0-1.oe2203.noarch
python3-requests-2.26.0-5.oe2203.noarch
python3-audit-3.0.1-3.oe2203.x86_64
python3-attrs-20.3.0-1.oe2203.noarch
python3-jsonschema-3.2.0-1.oe2203.noarch
python3-asn1crypto-1.4.0-1.oe2203.noarch
python3-cryptography-3.3.1-2.oe2203.x86_64
python3-jwt-2.3.0-3.oe2203.noarch
python3-oauthlib-3.1.1-3.oe2203.noarch
python3-IPy-1.01-1.oe2203.noarch
python3-policycoreutils-3.3-1.oe2203.noarch
python3-pip-21.3.1-2.oe2203.noarch
# rpm -ql python3 | grep site
/usr/lib/python3.9/site-packages
/usr/lib/python3.9/site-packages/__pycache__
/usr/lib64/python3.9/__pycache__/_sitebuiltins.cpython-39.opt-1.pyc
/usr/lib64/python3.9/__pycache__/_sitebuiltins.cpython-39.opt-2.pyc
/usr/lib64/python3.9/__pycache__/_sitebuiltins.cpython-39.pyc
/usr/lib64/python3.9/__pycache__/site.cpython-39.opt-1.pyc
/usr/lib64/python3.9/__pycache__/site.cpython-39.opt-2.pyc
/usr/lib64/python3.9/__pycache__/site.cpython-39.pyc
/usr/lib64/python3.9/_sitebuiltins.py
/usr/lib64/python3.9/site-packages
/usr/lib64/python3.9/site-packages/README.txt
/usr/lib64/python3.9/site-packages/__pycache_
# which pip
/usr/bin/pip
# which pip3
/usr/bin/pip3
# rpm -qf /usr/bin/pip
python3-pip-21.3.1-2.oe2203.noarch
# rpm -qf /usr/bin/pip3
python3-pip-21.3.1-2.oe2203.noarch
# ls -l /usr/bin/pip*
-rwxr-xr-x 1 root root 648 Jul 1 2022 /usr/bin/pip
lrwxrwxrwx 1 root root 9 Jul 1 2022 /usr/bin/pip-3 -> ./pip-3.9
-rwxr-xr-x 1 root root 648 Jul 1 2022 /usr/bin/pip3
lrwxrwxrwx 1 root root 8 Jul 1 2022 /usr/bin/pip-3.9 -> ./pip3.9
-rwxr-xr-x 1 root root 648 Jul 1 2022 /usr/bin/pip3.9
可以看出,python命令虽然没有被占用,但是pip被占用了并且指向pip3。
pip(或者pip3) install < 模块名> ,安装在 /usr/lib/python3.9/site-packages 目录下。
# ll /usr/lib/python3.9/site-packages
total 808K
-rw-r--r-- 1 root root 9.8K Oct 30 2020 asciidocapi.py
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 asn1crypto
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 asn1crypto-1.4.0-py3.9.egg-info
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 attr
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 attrs-20.3.0-py3.9.egg-info
drwxr-xr-x. 6 root root 4.0K Dec 28 2022 babel
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 Babel-2.9.1-py3.9.egg-info
drwxr-xr-x. 5 root root 4.0K Dec 28 2022 chardet
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 chardet-4.0.0-py3.9.egg-info
drwxr-xr-x. 5 root root 4.0K Dec 28 2022 charset_normalizer
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 charset_normalizer-2.0.8-py3.9.egg-info
drwxr-xr-x. 13 root root 4.0K Dec 28 2022 cloudinit
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 cloud_init-21.4-py3.9.egg-info
-rw-r--r--. 1 root root 3.0K Jul 30 2021 configobj-5.0.6-py3.9.egg-info
-rw-r--r--. 1 root root 88K Aug 26 2014 configobj.py
drwxr-xr-x. 6 root root 4.0K Dec 27 2022 dateutil
drwxr-xr-x. 2 root root 4.0K Dec 27 2022 decorator-5.0.9-py3.9.egg-info
-rw-r--r--. 1 root root 16K May 16 2021 decorator.py
drwxr-xr-x. 2 root root 4.0K Dec 27 2022 distro-1.6.0-py3.9.egg-info
-rw-r--r--. 1 root root 48K Jul 31 2021 distro.py
drwxr-xr-x. 3 root root 4.0K Dec 27 2022 _distutils_hack
-rw-r--r--. 1 root root 152 Jan 4 2022 distutils-precedence.pth
drwxr-xr-x. 9 root root 4.0K Dec 27 2022 dnf
drwxr-xr-x. 3 root root 4.0K Dec 27 2022 dnf-plugins
drwxr-xr-x. 3 root root 4.0K Dec 27 2022 dnfpluginscore
drwxr-xr-x. 6 root root 4.0K Dec 27 2022 firewall
drwxr-xr-x. 4 root root 4.0K Dec 27 2022 gi
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 idna
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 idna-3.2-py3.9.egg-info
-rw-r--r--. 1 root root 8.0K Jan 30 2021 IPy-1.01-py3.9.egg-info
-rw-r--r--. 1 root root 60K Dec 2 2020 IPy.py
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 jinja2
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 Jinja2-3.0.3-py3.9.egg-info
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 jsonpatch-1.32-py3.9.egg-info
-rw-r--r--. 1 root root 29K Mar 14 2021 jsonpatch.py
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 jsonpointer-2.2-py3.9.egg-info
-rw-r--r--. 1 root root 9.8K Nov 4 2021 jsonpointer.py
drwxr-xr-x. 6 root root 4.0K Dec 28 2022 jsonschema
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 jsonschema-3.2.0-py3.9.egg-info
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 jwt
drwxr-xr-x. 3 root root 4.0K Dec 27 2022 nftables
-rw-r--r--. 1 root root 623 Dec 4 2021 nftables-0.1-py3.9.egg-info
drwxr-xr-x. 6 root root 4.0K Dec 28 2022 oauthlib
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 oauthlib-3.1.1-py3.9.egg-info
drwxr-xr-x. 5 root root 4.0K Jan 5 2023 pip
drwxr-xr-x. 2 root root 4.0K Jan 5 2023 pip-21.3.1.dist-info
drwxr-xr-x. 6 root root 4.0K Dec 27 2022 pkg_resources
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 ply
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 ply-3.11-py3.9.egg-info
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 prettytable
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 prettytable-2.4.0-py3.9.egg-info
drwxr-xr-x. 3 root root 4.0K Dec 27 2022 procfs
drwxr-xr-x. 2 root root 4.0K Jan 5 2023 __pycache__
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 pycparser
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 pycparser-2.21-py3.9.egg-info
drwxr-xr-x. 3 root root 4.0K Dec 27 2022 pygtkcompat
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 PyJWT-2.3.0-py3.9.egg-info
drwxr-xr-x. 4 root root 4.0K Dec 27 2022 pyparsing
drwxr-xr-x. 2 root root 4.0K Dec 27 2022 pyparsing-3.0.6.dist-info
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 pyserial-3.5-py3.9.egg-info
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 PySocks-1.7.1-py3.9.egg-info
drwxr-xr-x. 2 root root 4.0K Dec 27 2022 python_dateutil-2.8.2-py3.9.egg-info
drwxr-xr-x. 2 root root 4.0K Dec 27 2022 python_linux_procfs-0.6.3-py3.9.egg-info
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 pytz
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 pytz-2021.3-py3.9.egg-info
drwxr-xr-x. 6 root root 4.0K Dec 27 2022 pyudev
drwxr-xr-x. 2 root root 4.0K Dec 27 2022 pyudev-0.22.0-py3.9.egg-info
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 requests
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 requests-2.26.0-py3.9.egg-info
-rw-r--r--. 1 root root 104K Dec 14 2021 seobject.py
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 sepolgen
drwxr-xr-x. 5 root root 4.0K Dec 28 2022 sepolicy
-rw-r--r--. 1 root root 227 Dec 14 2021 sepolicy-3.3-py3.9.egg-info
drwxr-xr-x. 6 root root 4.0K Dec 28 2022 serial
drwxr-xr-x. 7 root root 4.0K Dec 27 2022 setuptools
drwxr-xr-x. 2 root root 4.0K Dec 27 2022 setuptools-59.4.0.dist-info
drwxr-xr-x. 2 root root 4.0K Dec 27 2022 six-1.16.0.dist-info
-rw-r--r--. 1 root root 34K Dec 21 2021 six.py
-rw-r--r--. 1 root root 3.9K Sep 20 2019 sockshandler.py
-rw-r--r--. 1 root root 31K Sep 20 2019 socks.py
drwxr-xr-x. 4 root root 4.0K Dec 27 2022 sssd
drwxr-xr-x. 3 root root 4.0K Dec 27 2022 SSSDConfig
-rw-r--r--. 1 root root 205 Dec 21 2021 SSSDConfig-2.6.1-py3.9.egg-info
drwxr-xr-x. 14 root root 4.0K Dec 27 2022 tuned
drwxr-xr-x. 6 root root 4.0K Dec 28 2022 urllib3
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 urllib3-1.26.7-py3.9.egg-info
-rw-r--r--. 1 root root 47K Aug 26 2014 validate.py
-rw-r--r--. 1 root root 21 Aug 26 2014 _version.py
drwxr-xr-x. 3 root root 4.0K Dec 28 2022 wcwidth
drwxr-xr-x. 2 root root 4.0K Dec 28 2022 wcwidth-0.2.5-py3.9.egg-info
二、在 openEuler-22.03-LTS 上编译安装 python 2.x
cat compile_python2.sh
#!/bin/bash
# 安装编译工具
yum -y install make gcc gcc-c++
# 编译安装python2
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz
tar -Jxf Python-2.7.18.tar.xz
cd Python-2.7.18
./configure --enable-shared --prefix=/usr/local/python-2.7.18 && make -j 8 && make install
# 设置软连接,占用python命令
ln -s /usr/local/python-2.7.18/bin/python /usr/bin/python
# 设置库环境变量
echo /usr/local/python-2.7.18/lib > /etc/ld.so.conf.d/py2.conf
ldconfig
# 安装pip2 包管理器
/usr/local/python-2.7.18/bin/python -m ensurepip
# ll /usr/local/python-2.7.18/
total 16K
drwxr-xr-x 2 root root 4.0K Jan 8 2023 bin
drwxr-xr-x 3 root root 4.0K Jan 8 2023 include
drwxr-xr-x 4 root root 4.0K Jan 8 2023 lib
drwxr-xr-x 3 root root 4.0K Jan 8 2023 share
# ll /usr/local/python-2.7.18/bin/
total 56K
-rwxr-xr-x 1 root root 115 Jan 8 2023 2to3
-rwxr-xr-x 1 root root 113 Jan 8 2023 idle
-rwxr-xr-x 1 root root 98 Jan 8 2023 pydoc
lrwxrwxrwx 1 root root 7 Jan 8 2023 python -> python2
lrwxrwxrwx 1 root root 9 Jan 8 2023 python2 -> python2.7
-rwxr-xr-x 1 root root 18K Jan 8 2023 python2.7
-rwxr-xr-x 1 root root 1.7K Jan 8 2023 python2.7-config
lrwxrwxrwx 1 root root 16 Jan 8 2023 python2-config -> python2.7-config
lrwxrwxrwx 1 root root 14 Jan 8 2023 python-config -> python2-config
-rwxr-xr-x 1 root root 19K Jan 8 2023 smtpd.py
# ls -l /usr/local/python-2.7.18/bin/
total 76
-rwxr-xr-x 1 root root 115 Jan 8 2023 2to3
-rwxr-xr-x 1 root root 253 Aug 4 10:04 easy_install
-rwxr-xr-x 1 root root 253 Aug 4 10:04 easy_install-2.7
-rwxr-xr-x 1 root root 113 Jan 8 2023 idle
-rwxr-xr-x 1 root root 235 Aug 4 10:04 pip
-rwxr-xr-x 1 root root 235 Aug 4 10:04 pip2
-rwxr-xr-x 1 root root 235 Aug 4 10:04 pip2.7
-rwxr-xr-x 1 root root 98 Jan 8 2023 pydoc
lrwxrwxrwx 1 root root 7 Jan 8 2023 python -> python2
lrwxrwxrwx 1 root root 9 Jan 8 2023 python2 -> python2.7
-rwxr-xr-x 1 root root 17736 Jan 8 2023 python2.7
-rwxr-xr-x 1 root root 1701 Jan 8 2023 python2.7-config
lrwxrwxrwx 1 root root 16 Jan 8 2023 python2-config -> python2.7-config
lrwxrwxrwx 1 root root 14 Jan 8 2023 python-config -> python2-config
-rwxr-xr-x 1 root root 18561 Jan 8 2023 smtpd.py
# ll /usr/local/python-2.7.18/lib/
total 8.2M
lrwxrwxrwx 1 root root 19 Jan 8 2023 libpython2.7.so -> libpython2.7.so.1.0
-r-xr-xr-x 1 root root 8.2M Jan 8 2023 libpython2.7.so.1.0
drwxr-xr-x 2 root root 4.0K Jan 8 2023 pkgconfig
drwxr-xr-x 28 root root 20K Jan 8 2023 python2.7
# /usr/local/python-2.7.18/bin/pip install requests
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Collecting requests
Downloading https://files.pythonhosted.org/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl (63kB)
|████████████████████████████████| 71kB 258kB/s
Collecting urllib3<1.27,>=1.21.1 (from requests)
Downloading https://files.pythonhosted.org/packages/c5/05/c214b32d21c0b465506f95c4f28ccbcba15022e000b043b72b3df7728471/urllib3-1.26.16-py2.py3-none-any.whl (143kB)
|████████████████████████████████| 143kB 162kB/s
Collecting idna<3,>=2.5; python_version < "3" (from requests)
Downloading https://files.pythonhosted.org/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl (58kB)
|████████████████████████████████| 61kB 193kB/s
Collecting certifi>=2017.4.17 (from requests)
Downloading https://files.pythonhosted.org/packages/37/45/946c02767aabb873146011e665728b680884cd8fe70dde973c640e45b775/certifi-2021.10.8-py2.py3-none-any.whl (149kB)
|████████████████████████████████| 153kB 46kB/s
Collecting chardet<5,>=3.0.2; python_version < "3" (from requests)
Downloading https://files.pythonhosted.org/packages/19/c7/fa589626997dd07bd87d9269342ccb74b1720384a4d739a1872bd84fbe68/chardet-4.0.0-py2.py3-none-any.whl (178kB)
|████████████████████████████████| 184kB 39kB/s
Installing collected packages: urllib3, idna, certifi, chardet, requests
Successfully installed certifi-2021.10.8 chardet-4.0.0 idna-2.10 requests-2.27.1 urllib3-1.26.16
WARNING: You are using pip version 19.2.3, however version 20.3.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
# ll /usr/local/python-2.7.18/lib/python2.7/site-packages/
total 72K
drwxr-xr-x 2 root root 4.0K Aug 4 10:18 certifi
drwxr-xr-x 2 root root 4.0K Aug 4 10:18 certifi-2021.10.8.dist-info
drwxr-xr-x 4 root root 4.0K Aug 4 10:18 chardet
drwxr-xr-x 2 root root 4.0K Aug 4 10:18 chardet-4.0.0.dist-info
-rw-r--r-- 1 root root 126 Aug 4 10:04 easy_install.py
-rw-r--r-- 1 root root 317 Aug 4 10:04 easy_install.pyc
drwxr-xr-x 2 root root 4.0K Aug 4 10:18 idna
drwxr-xr-x 2 root root 4.0K Aug 4 10:18 idna-2.10.dist-info
drwxr-xr-x 4 root root 4.0K Aug 4 10:04 pip
drwxr-xr-x 2 root root 4.0K Aug 4 10:04 pip-19.2.3.dist-info
drwxr-xr-x 4 root root 4.0K Aug 4 10:04 pkg_resources
-rw-r--r-- 1 root root 119 Jan 8 2023 README
drwxr-xr-x 2 root root 4.0K Aug 4 10:18 requests
drwxr-xr-x 2 root root 4.0K Aug 4 10:18 requests-2.27.1.dist-info
drwxr-xr-x 5 root root 4.0K Aug 4 10:04 setuptools
drwxr-xr-x 2 root root 4.0K Aug 4 10:04 setuptools-41.2.0.dist-info
drwxr-xr-x 5 root root 4.0K Aug 4 10:18 urllib3
drwxr-xr-x 2 root root 4.0K Aug 4 10:18 urllib3-1.26.16.dist-info
# python -V
Python 2.7.18
# python3 -V
Python 3.9.9
三、参考
CentOS7.x上Python3.8.3的编译安装
https://www.jianshu.com/p/b0e84bf382c1
解决编译安装Python 2.7.16没有pip
https://www.cnblogs.com/wyf-577513827/p/11207389.html