Python安装

1 获取Python安装路径信息

方法一:使用 sysconfig 模块

Python 的 sysconfig 模块可以提供安装路径的详细信息。

  1. 打开终端并运行Python 3.9:

    /usr/bin/python3.9
    
  2. 在Python解释器中运行以下代码:

    import sysconfig
    for key, value in sysconfig.get_paths().items():
        print(f"{key}: {value}")
    

这个命令会输出Python 3.9安装的各种路径信息。

Python 3.9.5 (default, Nov 23 2021, 15:27:38)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig
>>> for key, value in sysconfig.get_paths().items():
...     print(f"{key}: {value}")
...
stdlib: /usr/lib/python3.9
platstdlib: /usr/lib/python3.9
purelib: /usr/lib/python3.9/site-packages
platlib: /usr/lib/python3.9/site-packages
include: /usr/include/python3.9
platinclude: /usr/include/python3.9
scripts: /usr/bin
data: /usr

上述输出来自 sysconfig.get_paths(),它提供了Python安装过程中各种重要路径的详细信息。每个键值对代表一个特定的路径配置。以下是对每个键的解释:

  1. stdlib: /usr/lib/python3.9

    • 标准库路径,存放Python标准库模块。标准库模块是Python自带的库,例如 ossysmath 等模块。
  2. platstdlib: /usr/lib/python3.9

    • 平台相关的标准库路径,通常和 stdlib 相同。它包括特定平台的库和模块。
  3. purelib: /usr/lib/python3.9/site-packages

    • 纯Python模块安装路径。通过 pip 等工具安装的第三方纯Python包会存放在这个目录下。
  4. platlib: /usr/lib/python3.9/site-packages

    • 平台相关模块安装路径。这个路径用于存放包含C扩展的第三方模块,这些模块在编译时依赖于特定平台。
  5. include: /usr/include/python3.9

    • 头文件路径,存放Python的头文件。开发人员在编写C扩展模块时需要引用这些头文件。
  6. platinclude: /usr/include/python3.9

    • 平台相关头文件路径,通常和 include 相同。
  7. scripts: /usr/bin

    • 脚本路径,存放Python解释器和其他脚本。例如,python3.9 可执行文件通常位于这个目录下。
  8. data: /usr

    • 数据文件路径,Python相关的数据文件通常存放在这个目录下。这个路径是Python安装的根目录。

方法二:使用 sys 模块

sys 模块也可以提供一些有用的路径信息。

  1. 打开终端并运行Python 3.9:

    /usr/bin/python3.9
    
  2. 在Python解释器中运行以下代码:

    import sys
    print(sys.executable)  # Python解释器的路径
    print(sys.prefix)  # Python安装的根路径
    print(sys.exec_prefix)  # Python可执行文件的安装路径
    print(sys.path)  # 模块搜索路径列表
    

方法三:使用 distutils.sysconfig 模块

distutils.sysconfig 模块也可以用来获取Python的安装路径。

  1. 打开终端并运行Python 3.9:

    /usr/bin/python3.9
    
  2. 在Python解释器中运行以下代码:

    from distutils.sysconfig import get_python_lib, get_python_inc
    
    print("Library Path:", get_python_lib())
    print("Include Path:", get_python_inc())
    

方法四:使用 pip show

如果你使用 pip 安装了某些包,可以通过 pip show 来查看某个包的安装路径,这也可以帮助你找到Python的库路径。

pip show some-package

some-package 替换为已安装的包名称。这个命令会显示包的详细信息,包括它的安装路径。

2 Linux系统Python安装路径

这取决于系统的配置、用户安装的方式以及具体的Python版本。以下是常见的Python安装路径及其详细解释:

1. 系统默认Python路径

系统自带的Python版本,通常位于以下路径:

  • /usr/bin/python/usr/bin/pythonX.X

    • 系统自带的Python解释器,X.X代表具体的Python版本号(例如3.9)。
    • 用于系统脚本和工具。
  • /usr/lib/pythonX.X

    • Python标准库的安装路径。
    • 包含标准库模块及其子目录。

2. 用户安装的Python路径

用户通过各种方式(如编译源码、使用包管理工具等)安装的Python,可能会位于不同的路径:

  • /usr/local/bin/pythonX.X

    • 通过源码编译安装的Python解释器。
    • 通常用于用户自定义的Python版本,不会影响系统默认的Python版本。
  • /usr/local/lib/pythonX.X

    • 通过源码编译安装的Python标准库路径。

当以非管理员权限(即非 root 用户)安装 Python 包时,通常会将这些包安装到用户的主目录中,以避免影响系统级的 Python 环境。这些包通常位于~/.local/lib/python/site-packages/
使用 pip install 命令时,如果指定了 --user 选项,包将安装到用户级别的目录中,而不是系统级别的目录
Python 可能通过环境变量如 PYTHONUSERBASE 来确定用户级的安装路径。如果 PYTHONUSERBASE 设置为用户的主目录,这会导致包安装到 ~/.local/lib/python/site-packages 中。

3. 虚拟环境路径

用户创建的Python虚拟环境(virtualenv)有自己独立的解释器和库路径:

  • /home/username/.virtualenvs/env_name/bin/python

    • 虚拟环境的Python解释器。
    • 每个虚拟环境有自己独立的解释器和包。
  • /home/username/.virtualenvs/env_name/lib/pythonX.X/site-packages

    • 虚拟环境的库路径。
    • 安装在虚拟环境中的第三方包会存放在这个目录下。

4. Anaconda/Miniconda路径

使用Anaconda或Miniconda安装的Python环境有自己独立的路径:

  • /home/username/anaconda3/bin/python

    • Anaconda的Python解释器。
  • /home/username/anaconda3/lib/pythonX.X

    • Anaconda的Python标准库路径。
  • /home/username/anaconda3/envs/env_name/bin/python

    • Conda环境中的Python解释器。
  • /home/username/anaconda3/envs/env_name/lib/pythonX.X

    • Conda环境中的Python标准库路径。

5. Pyenv路径

使用Pyenv管理的Python版本和环境路径:

  • /home/username/.pyenv/versions/X.X.X/bin/python

    • Pyenv安装的特定版本的Python解释器。
  • /home/username/.pyenv/versions/X.X.X/lib/pythonX.X

    • Pyenv安装的特定版本的Python标准库路径。

详细解释

  1. /usr/bin/python:

    • 这是系统自带的Python解释器路径。系统脚本和工具通常依赖于这个Python版本。
    • 例如,在Ubuntu系统上,Python 2.x可能是/usr/bin/python,而Python 3.x可能是/usr/bin/python3
  2. /usr/local/bin/pythonX.X:

    • 用户通过源码编译安装的Python解释器路径。
    • 这个路径通常不会覆盖系统默认的Python版本,因此可以安全地安装不同版本的Python。
  3. 虚拟环境路径:

    • 用户创建虚拟环境时,虚拟环境有独立的解释器和库路径。
    • 这有助于隔离项目的依赖,不会与系统Python环境冲突。
  4. Anaconda/Miniconda路径:

    • 使用Anaconda或Miniconda安装的Python环境路径。
    • Anaconda/Miniconda提供了一个完整的数据科学平台,包含Python和大量的科学计算包。
  5. Pyenv路径:

    • 使用Pyenv管理的Python版本路径。
    • Pyenv允许用户轻松安装和切换不同版本的Python,适合需要测试多个Python版本的开发者。

3 Linux系统安装Python

如果系统无法联网并且只能使用 apt,那么可以通过下载并手动安装依赖包来实现。以下是各个包的详细解释,以及离线安装的一般方法。

sudo apt install -y wget build-essential zlib1g-dev libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libgdbm-dev libnss3-dev liblzma-dev uuid-dev

1. 各依赖包的解释

基本构建工具
  • wget:一个命令行工具,用于从网络上下载文件。这里用于下载 Python 源代码。
  • build-essential:包含编译 C/C++ 代码所需的基本工具集,例如 gcc 编译器、make 等。Python 源代码需要用 gcc 来编译。
Python 编译依赖
  • zlib1g-dev:提供 zlib 压缩库的开发文件。Python 中的 zlib 模块用于处理 .zip 压缩文件。
  • libffi-dev:用于与外部共享库(如 C 函数库)进行交互。Python 的 ctypescffi 模块需要用到它。
  • libssl-dev:OpenSSL 库的开发文件,用于处理 SSL/TLS 加密。Python 中的 sslhttps 功能需要依赖 OpenSSL。
  • libbz2-dev:提供 bzip2 压缩库的开发文件。Python 中的 bz2 模块用于处理 .bz2 压缩文件。
  • libreadline-dev:GNU Readline 库的开发文件,提供 Python 解释器的交互式输入编辑功能。
  • libsqlite3-dev:SQLite 的开发文件。Python 中的 sqlite3 模块用于数据库操作。
  • libncurses5-dev:提供 ncurses 库的开发文件,支持命令行界面中的文本 UI 操作,Python 中的 curses 模块依赖此库。
  • libgdbm-dev:GDBM 数据库的开发文件,Python 中的 dbm 模块需要此库来管理键值存储。
  • libnss3-dev:Mozilla NSS 库的开发文件,用于实现加密和安全通信。
  • liblzma-dev:xz 压缩库的开发文件,Python 中的 lzma 模块需要它来处理 .xz 文件。
  • uuid-dev:UUID 库的开发文件,Python 中的 uuid 模块用于生成唯一标识符。

2. 离线安装步骤

由于无法联网,可以在有网络的计算机上下载所需的 .deb 包文件,并传输到离线计算机上进行安装。

步骤 1:获取所有依赖的 .deb

在另一台有网络的计算机上,使用 apt 命令下载依赖包的 .deb 文件。

sudo apt update
mkdir python-deps
cd python-deps

# 下载每个所需依赖包的 .deb 文件到当前目录
apt download wget build-essential zlib1g-dev libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libgdbm-dev libnss3-dev liblzma-dev uuid-dev

此命令将会下载这些包和它们的所有依赖项到当前目录中。

步骤 2:传输 .deb 文件到离线系统

将下载的 python-deps 目录中的所有 .deb 文件拷贝到离线系统中,例如通过 USB 驱动器或其他方式。

步骤 3:在离线系统上安装依赖包

在离线系统中,进入包含 .deb 文件的目录,然后使用以下命令安装这些包:

cd /path/to/python-deps
sudo dpkg -i *.deb

dpkg -i 命令会尝试逐个安装这些 .deb 包,如果有依赖关系,可能需要重复运行 dpkg -i *.deb 直到所有依赖项都被正确安装。

3. 安装 Python 3.10

不通过 deadsnakes PPA 安装 Python 3.10,可以从源代码手动编译和安装。以下是详细步骤:

在编译 Python 之前,需要先安装一些必要的依赖:

sudo apt update
sudo apt install -y wget build-essential zlib1g-dev libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libgdbm-dev libnss3-dev liblzma-dev uuid-dev

进入 /usr/src 目录,并下载 Python 3.10 的源码包:

cd /usr/src
sudo wget https://www.python.org/ftp/python/3.10.15/Python-3.10.15.tgz

解压下载的 Python-3.10.15.tgz 文件:

sudo tar -xzf Python-3.10.15.tgz
cd Python-3.10.15

在开始编译之前,需要配置编译选项以确保 Python 能够正常运行:

sudo ./configure --enable-optimizations
  • --enable-optimizations 选项可以对 Python 进行性能优化,使得编译后的 Python 程序运行更高效。

使用 make 命令编译 Python 源代码,-j 后面的数字指定使用多少个 CPU 内核来加速编译过程。可以根据您的 CPU 核心数量来选择,例如,如果您的 CPU 有 4 核,可以使用 -j 4

sudo make -j 4
sudo make altinstall

注意:使用 make altinstall 而不是 make install,以避免覆盖系统默认的 python3 可执行文件。

如果没有自动安装 pip,可以手动安装:

sudo apt install -y wget
wget https://bootstrap.pypa.io/get-pip.py
sudo python3.10 get-pip.py

希望让 python3 命令默认使用 Python 3.10,可以创建一个符号链接(可选):

sudo ln -s /usr/local/bin/python3.10 /usr/bin/python3

centeros按照python的命令如下
2630 tar -xzf Python-3.10.15.tgz
2631 cd Python-3.10.15
2632 ./configure
2633 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
2634 sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
2635 ./configure
2637 make&&make install
2638 sudo make && sudo make install
2639 whereis python3

你可能感兴趣的:(python,python,linux)