因为Python是跨平台的 , 它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序 , 放到Linux上也是能够运行的。
要开始学习Python编程 , 首先就得把Python安装到你的电脑里。安装后 , 你会得到Python解释器(就是负责运行Python程序的) , 一个命令行交互环境 , 还有一个简单的集成开发环境。
目前 , Python有两个版本 , 一个是2.x版 , 一个是3.x版 , 这两个版本是不兼容的。 3.x版越来越普及 。
2.x最后一个版本是2.7 , 很多企业为了兼容老项目依然在维护。从2020年开始 , 不在支持Python2。
Python2和3的区别
语句函数化 , 例如
print(1,2)打印出1 2, 但是2.x中意思是print语句打印元组 ,3.x中意思是函数的2个参数整除 , 例如
1/2和1//2,3.x版本中/为自然除3.x中raw_input重命名为input, 不再使用raw_inputround函数 , 在3.x中i.5的取整变为距离最近的偶数3.x字符串统一使用Unicode异常的捕获、抛出的语法改变
2015年后 , 各主要国内外大公司都已经迁移到了Python3。很多重要的Python第三方库也陆续停止了对 Python2的支持 , 所以 , Python 3已经是必须学习的版本。2018年Python3的使用比例已经超过了 85%。 在公司内 , 往往老项目维护维持2.x版本暂不升级 , 新项目使用3.x开发。 开发时 , 假如使用3.5.8 , 部署时应尽量保持一致 , 不要随意升级版本 , 更不要降低版本。
官方网站下载不同平台。 https://www.python.org/downloads/
1. Linux环境安装
如果是Ubuntu等桌面系统 , 都已经更新到了Python较新的版本。但多数生产环境使用的还是红帽系 统。
CentOS7默认还是Python2.7 , 而开发环境如果是高版本Python就带来了问题。为了不破坏当前系统使用 , 甚至以后为了多个Python项目部署(这些项目使用不同Python解释器版本) , 建议使用多版本工具。
也可以考虑容器部署Python应用程序。
ubuntu2204安装最小化之后默认就已经安装了Python3.10。我这边测试centos8默认通过yum安装的版本为python3.9.21 。
1.1 软件包安装
1.1.1 ubuntu系统
Debian 和 Ubuntu 系统都有自己的包管理器 apt-get , 可以通过以下步骤安装最新版本的 Python:
更新系统软件包列表
sudo apt-get update安装依赖包
sudo apt-get install software-properties-common添加
Python的PPA(Personal Package Archive)sudo add-apt-repository ppa:deadsnakes/ppa再次更新系统软件包列表:
sudo apt-get update安装最新版本的
Pythonsudo apt-get install python3.x将
3.x替换为你要安装的具体版本号 , 比如3.10。
1.1.2 CentOS/Rhel系统
CentOS 和 RHEL 系统则使用 yum 作为包管理器:
安装
EPEL安装源sudo yum install epel-release安装需要的python版本, 这里需要注意 , 每个系统版本的支持
python的rpm包版本是有限的。能够安装的python版本不一定是自己需要的sudo yum install python3.x 或 sudo yum install python3x将
3.x替换为你要安装的具体版本号 , 比如3.10
1.2 编译安装
1.2.1 CentOS8
这里的编译安装主要是为了安装CentOS系统没有的那些python版本
下载最新版本的
python二进制包[root@centos8-python ~]# wget https://www.python.org/ftp/python/3.13.5/Python-3.13.5.tgz安装
CentOS系统中依赖的rpm包dnf -y install wget gcc openssl-devel bzip2-devel libffi-devel xz-devel tk-devel make运行编译命令
[root@centos8-python ~]# cd Python-3.13.5 [root@centos8-python Python-3.13.5]# ./configure --prefix=/usr/local/python-3.13 --enable-optimizations --with-lto --with-computed-gotos --with-system-ffi --enable-shared [root@centos8-python Python-3.13.5]# make && make altinstall这里不使用
install而是altinstall的原因是因为altinstall跳过创建python链接和手册页面链接 ,install将隐藏系统二进制文件和手册页面。altinstall避免覆盖系统Python。如果直接使用
install会直接创建默认链接 , 在/usr/bin目录中创建一个名为python的符号链接 , 指向新安装的Python版本。另外覆盖系统默认Python,如果系统中已有其他版本的Python(如/usr/bin/python指向python2.6) ,make install会覆盖该链接。安装完成之后 , 会提示以下内容。这里是因为我们没有配置环境变量。

因此这里直接配置环境变量
[root@centos8-python ~]# cat /etc/profile PYTHON_HOME=/usr/local/python-3.13/ export PATH=$PATH:$PYTHON_HOME/bin [root@centos8-python ~]# source /etc/profile配置共享库。因为安装过程中使用
make altinstall命令 , 因此安装过程中不会覆盖原本的配置。因此如果原本的环境中如果没有Python。直接配置环境变量 ,运行python命令会提示如下报错[root@centos8-python Python-3.13.5]# python3.13 python3.13: error while loading shared libraries: libpython3.13.so.1.0: cannot open shared object file: No such file or directory因此这里有三种解决办法
方案 1:使用
ldconfig(适用于单一 Python 版本)如果系统只有 一个主要的 Python 版本 , 可以手动将
libpython3.x.so.1.0添加到动态库搜索路径:[root@centos8-python Python-3.13.5]# echo "/usr/local/python-3.13/lib/" > /etc/ld.so.conf.d/python313.conf [root@centos8-python Python-3.13.5]# cat /etc/ld.so.conf.d/python313.conf /usr/local/python-3.13/lib/ [root@centos8-python Python-3.13.5]# ldconfig然后验证库是否已正确注册:
[root@centos8-python ~]# ldconfig -p | grep libpython libpython3.13.so.1.0 (libc6,x86-64) => /usr/local/python-3.13/lib/libpython3.13.so.1.0 libpython3.13.so (libc6,x86-64) => /usr/local/python-3.13/lib/libpython3.13.so libpython3.6m.so.1.0 (libc6,x86-64) => /lib64/libpython3.6m.so.1.0 libpython3.so (libc6,x86-64) => /usr/local/python-3.13/lib/libpython3.so libpython3.so (libc6,x86-64) => /lib64/libpython3.so这里有明显的缺点
如果有多个
Python版本 , 可能会导致动态库冲突不能保证每个
Python版本都能正确找到自己的libpython3.x.so.1.0。
使用
LD_LIBRARY_PATH(适用于手动切换 Python)[root@centos8-python ~]# export LD_LIBRARY_PATH=/usr/local/python-3.13/lib/:$LD_LIBRARY_PATH [root@centos8-python ~]#/usr/local/python-3.13/bin/python3.13如果希望 每次自动生效 , 可以将这行命令添加到
/etc/profile[root@centos8-python ~]# echo "export LD_LIBRARY_PATH=/usr/local/python-3.13/lib/:$LD_LIBRARY_PATH" >> /etc/profile这里也有缺点。
每次切换
Python版本时都需要手动修改LD_LIBRARY_PATH。影响当前终端
session, 不适用于长期维护多个Python版本的环境。
使用 RPATH
适用于多个
Python版本共存 , 每个Python版本独立运行 , 不影响其他版本。为什么选择 RPATH?
每个
Python版本可以自己找到自己的libpython3.x.so.1.0, 不会相互干扰。不需要手动
export LD_LIBRARY_PATH, 运行时自动找到库文件。不会影响系统的全局
ldconfig配置 , 避免潜在的库冲突。
直接修改 Python 可执行文件的
RPATH[root@centos8-python ~]# patchelf --set-rpath /usr/local/python-3.13/lib/ /usr/local/python-3.13/bin/python3.13如果没有安装
patchelf命令 ,运行以下命令安装# Ubuntu/Debian sudo apt install patchelf # CentOS/Fedora sudo yum install patchelf 之后输入以下命令验证库文件是否配置正常
[root@centos8-python ~]# ldd /usr/local/python-3.13/bin/python3.13 | grep libpython libpython3.13.so.1.0 => /usr/local/python-3.13/lib/libpython3.13.so.1.0 (0x00007f0749001000)
1.2.2 Ubuntu
安装依赖包
root@ubuntu2204:~# apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev liblzma-dev tk-dev下载源码包·
root@ubuntu2204:~# wget https://www.python.org/ftp/python/3.13.5/Python-3.13.5.tgz root@ubuntu2204:~# tar -xf Python-3.13.5.tgz root@ubuntu2204:~# cd Python-3.13.5/编译安装
root@ubuntu2204:~/Python-3.13.5# ./configure --prefix=/usr/local/python-3.13 --enable-optimizations --with-lto --with-computed-gotos --with-system-ffi --enable-shared root@ubuntu2204:~/Python-3.13.5# make -j 4 && make altinstall这里直接安装成功了, 后续直接按照
CentOS的编译流程配置环境变量和库信息即可root@ubuntu2204:~/Python-3.13.5# cat /etc/profile PYTHON_HOME=/usr/local/python-3.13/ export PATH=$PATH:$PYTHON_HOME/bin root@ubuntu2204:~/Python-3.13.5# source /etc/profile root@ubuntu2204:~/Python-3.13.5# apt install patchelf root@ubuntu2204:~/Python-3.13.5# patchelf --set-rpath /usr/local/python-3.13/lib/ /usr/local/python-3.13/bin/python3.13
1.3 版本切换
在Linux系统中提供了一个alternatives内置命令 , 即最小化安装也有该命令 , 用于在多个同功能的软件 , 或软件的多个不同版本间选择、切换。简单来说就是版本切换控制。例如 , 你的操作系统有多个Python版本 , 例如python3.6,Python 3.9,如果不用alternatives命令 , 那么你可能需要通过手工修改软链接来实现Python版本的切换。如果用alternatives命令就可以很容易的实现Python版本的切换和管理。
另外 , 关于命令alternatives与update-alternatives的关系 , 其实先有update-alternatives命令 , 然后才有alternatives , update-alternatives最开始是Debian Linux下的一个项目 , 用于管理多版本 , 它是Perl编写的 , 然后RHEL重写了这个项目 , 名字也改为了alternatives , alternatives则在基于Fedora的分发版本(Redhat, CentOS)中发行 , 传播 , 而update-alternatives一般存在Debian Linux下。但是为了统一或者方便 , 在RHEL下你也会看到update-alternatives这个命令 , 它此时实际上是一个软链接 , 指向alternatives命令。
语法 :
[root@host-192-168-71-25 ~]# alternatives --help
alternatives version 1.24 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.
usage: alternatives --install <link> <name> <path> <priority>
[--initscript <service>]
[--family <family>]
[--follower <follower_link> <follower_name> <follower_path>]*
alternatives --remove <name> <path>
alternatives --auto <name>
alternatives --config <name>
alternatives --display <name>
alternatives --set <name> <path/family>
alternatives --list
alternatives --remove-all <name>
alternatives --add-follower <name> <path> <follower_link> <follower_name> <follower_path>
alternatives --remove-follower <name> <path> <follower_name>
common options: --verbose --test --help --usage --version --keep-missing --keep-foreign
--altdir <directory> --admindir <directory>
主要常使用参数是install、remove 、config 、display 、list这5个参数
install:生成新的软链接remove: 删除软链接config: 使用交互方式选择软连接display: 显示软连接list: 显示所有软连接set: 使用非交互方式选择软连接
这里默认情况下没有关于python3的相关配置 , 因此需要使用以下命令手动指定python3的链接文件 , 设置过程中优先级越高, 链接为默认选项。
[root@host-192-168-71-25 ~]# alternatives --install /usr/bin/python python3 /usr/bin/python3.11 300
[root@host-192-168-71-25 ~]# alternatives --install /usr/bin/python python3 /usr/bin/python3.12 400配置完成之后, 实际显示效果如下
[root@host-192-168-71-25 ~]# alternatives --display python3
python3 - status is auto.
link currently points to /usr/bin/python3.12
/usr/bin/python3.11 - priority 300
/usr/bin/python3.12 - priority 400
Current `best' version is /usr/bin/python3.12.
[root@host-192-168-71-25 ~]# alternatives --list
libnssckbi.so.x86_64 auto /usr/lib64/pkcs11/p11-kit-trust.so
soelim auto /usr/bin/soelim.groff
cifs-idmap-plugin auto /usr/lib64/cifs-utils/cifs_idmap_sss.so
iptables auto /usr/sbin/iptables-nft
ebtables auto /usr/sbin/ebtables-nft
arptables auto /usr/sbin/arptables-nft
ld auto /usr/bin/ld.bfd
man auto /usr/bin/man.man-db
nc auto /usr/bin/ncat
man.7.gz auto /usr/share/man/man7/man.man-pages.7.gz
python3 auto /usr/bin/python3.11可以通过以下两种方式实现命令切换python3的版本信息
[root@host-192-168-71-25 ~]# alternatives --config python3
There are 2 programs which provide 'python3'.
Selection Command
-----------------------------------------------
1 /usr/bin/python3.11
*+ 2 /usr/bin/python3.12
Enter to keep the current selection[+], or type selection number: 1
[root@host-192-168-71-25 ~]# python
Python 3.11.11 (main, Jun 20 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
[root@host-192-168-71-25 ~]# alternatives --set python3 /usr/bin/python3.12
[root@host-192-168-71-25 ~]# python
Python 3.12.9 (main, Jun 20 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
使用命令查看文件
[root@host-192-168-71-25 ~]# ll /etc/alternatives/python3
lrwxrwxrwx 1 root root 19 Aug 7 01:08 /etc/alternatives/python3 -> /usr/bin/python3.12
[root@host-192-168-71-25 ~]# ll /usr/bin/python
lrwxrwxrwx 1 root root 25 Aug 7 01:01 /usr/bin/python -> /etc/alternatives/python3我们看到alternatvies其实是通过多一层软链接 , 例如 , /usr/bin/python指向/etc/alternatives/python3 , 这一层关系不变 , 切换python版本时 , 我们看到链接/etc/alternatives/python3 指向了不同的python版本来实现的。
alternatives 还有另外一个数据库目录:/var/lib/alternative。注册一条记录后 , 会在 /var/lib/alternatives/<name> 生成 INI 格式文件 ; alternatives 每次操作都会原子级更新软链。
[root@host-192-168-71-25 ~]# ll /var/lib/alternatives/
total 44
-rw-r--r--. 1 root root 584 Sep 5 2024 arptables
-rw-r--r--. 1 root root 78 Sep 5 2024 cifs-idmap-plugin
-rw-r--r--. 1 root root 277 Sep 5 2024 ebtables
-rw-r--r--. 1 root root 393 Sep 5 2024 iptables
-rw-r--r--. 1 root root 57 Sep 5 2024 ld
-rw-r--r--. 1 root root 69 Sep 5 2024 libnssckbi.so.x86_64
-rw-r--r--. 1 root root 381 Sep 5 2024 man
-rw-r--r--. 1 root root 78 Sep 5 2024 man.7.gz
-rw-r--r--. 1 root root 100 Sep 5 2024 nc
-rw-r--r-- 1 root root 72 Aug 7 01:08 python3
-rw-r--r--. 1 root root 130 Sep 5 2024 soelim
[root@host-192-168-71-25 ~]# cat /var/lib/alternatives/python3
manual
/usr/bin/python
/usr/bin/python3.11
300
/usr/bin/python3.12
400
2. Window 环境安装
这里windows如果需要安装python, 直接在python官网下载对应的windows版本

2.1 python安装
这里选择
Add python.exe to PATH,之后点击Customize installation。
默认选择所有, 直接点击
Next即可
这里选择要安装的目录路径

建议点击
Disable path length limit选项建议启用该选项 , 避免后续程序运行时 , 因为路径超长而出现报错
如果未勾选该选项 , 将注册表的如下键值 , 从
0改成1即可(本选项实际上是修改了NTFS filesystem的默认显示。在windows系统上 , 该限制是默认开启的。0代表开启限制 , 即false,1代表关闭限制 , 即true)Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled
之后安装成功。这里需要注意,Windows和Linux读取path的方式不太一样。Windows的path路径默认选择当前的路径, 当前路径没有再找path路径。Linux中会直接读取path路径

2.2 pycharm安装
pycharm官网:PyCharm: The only Python IDE you need
在
Pycharm官网下载对应的软件, 需要注意Pycharm最新版本2025.2中的profession版本和community版本已经合并了。

双击下载的软件包, 之后直接点击下一步



这里直接点击对应的桌面
Pycharm快捷图标, 首次进入会提示语言和区域
之后选择创建对应的
python项目即可
创建过程中需要选择对应的
Python解释器
之后直接使用即可
参考链接
linux如何安装python最新版本 – PingCode
解决 Python 找不到 libpython3.x.so.1.0 问题的几种方案 Python实战经验编程笔记TendCode
Python多环境管理神器(pyenv) - doublexi - 博客园
Linux下alternatives命令学习总结 - 潇湘隐者 - 博客园