『Python学习笔记系列:如何设置PYTHONPATH环境变量让Python运行更顺畅』

Python运行设置PYTHONPATH环境变量!

文章目录

  • 一. Python运行设置`PYTHONPATH`环境变量!
  • 1. 解释
  • 2. 为什么有用
  • 3. 示例
  • 4. vscode配置
  • 二. Ubuntu20.04安装python3.12
  • 三. 默认让python指定到python3.12,现在是3.8
  • 详细解释
  • 四. 使用建立软连接的方式
  • 详细步骤解释
  • 完整命令
  • 五. 如何直接删除python3.12
  • 详细步骤解释
  • 示例
  • 一. Python运行设置PYTHONPATH环境变量!

    export PYTHONPATH=$(pwd) 是一个命令,用于将当前目录添加到 Python 的模块搜索路径中。这里是详细的解释和原因:

    1. 解释

  • export PYTHONPATH=$(pwd)
  • export PYTHONPATH=:这部分设置一个名为 PYTHONPATH 的环境变量。PYTHONPATH 是一个特殊的环境变量,Python 会在这个路径中查找模块。
  • $(pwd):这个命令会返回当前目录的路径。例如,如果你在 /home/user/project 目录下运行这个命令,$(pwd) 会返回 /home/user/project
  • 因此,整个命令会将当前目录添加到 PYTHONPATH 中,使得 Python 在当前目录中搜索模块。

    2. 为什么有用

    Python 在导入模块时,会按照一定的顺序在多个地方查找模块:

    1. 当前脚本所在的目录
    2. PYTHONPATH 环境变量中指定的目录
    3. 标准库目录和第三方库的安装目录(如 site-packages

    当你运行 export PYTHONPATH=$(pwd) 时,你明确告诉 Python 在当前目录中查找模块,这对以下情况特别有用:

  • 模块在当前目录中:如果你的模块或包在当前目录中,但没有安装到标准的 site-packages 目录中,Python 默认不会在当前目录之外的其他地方查找这些模块。
  • 避免路径问题:有时你可能在子目录中运行脚本,而模块在父目录中,这时通过设置 PYTHONPATH 可以避免路径问题。
  • 3. 示例

    假设你的项目结构如下:

    project/
    ├── chatchat/
    │   ├── configs.py
    │   └── init_database.py
    └── libs/
        └── chatchat-server/
            └── chatchat/
                └── __init__.py
    

    如果你在 project/libs/chatchat-server/chatchat 目录中运行 init_database.py,并且需要导入 chatchat 模块,可以这样设置 PYTHONPATH

    cd project/libs/chatchat-server/chatchat
    export PYTHONPATH=$(pwd)
    python init_database.py --recreate-vs
    

    这将确保 Python 能找到 chatchat 模块,因为当前目录已经被添加到 Python 的模块搜索路径中。

    4. vscode配置

    {
        "code-runner.executorMap": {
            "python": "cd $dir && PYTHONPATH=$PYTHONPATH:$(dirname $(pwd)) python -u $fileName", // 适用于 Linux 和 macOS
            "python": "cd $dir && set PYTHONPATH=%PYTHONPATH%;%cd%\\.. && python -u $fileName" // 适用于 Windows
        }
    }
    
    

    settings.json 中配置好后,你可以运行你的 Python 文件,验证 PYTHONPATH 是否正确设置为上一级目录。这样,无论是在 Linux、macOS 还是 Windows 上运行,PYTHONPATH 都会被设置为当前目录的上一级,确保能够找到并导入相应的模块。

    二. Ubuntu20.04安装python3.12

    一直报错如下:

    poetry-demo-py3.8zkf@zkf-ubuntu18:~/poetry-demo$ sudo apt install python3.12
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package python3.12
    E: Couldn't find any package by glob 'python3.12'
    

    这个错误提示显示 add-apt-repository 工具找不到适合当前 Ubuntu 版本(focal)的发行版模板。你可以尝试以下步骤来解决这个问题:

    1. 确保系统更新

      # 这个命令会从所有配置的源(包括默认的 Ubuntu 仓库和任何添加的 PPA)下载最新的软件包信息。这样可以确保系统知道所有软件包的最新版本。
      sudo apt update
      #这个命令会升级系统中已安装的所有软件包到最新版本。它只会升级那些不会引起现有软件包依赖关系变化的包。
      sudo apt upgrade
      # 这个命令不仅会升级现有的软件包,还会处理依赖关系的变化,安装或删除必要的软件包。它比 apt upgrade 更加全面,适合在系统需要大规模更新时使用。
      sudo apt dist-upgrade
      # 这个命令会移除系统中不再需要的包,这些包通常是之前安装的软件包的依赖包,但现在已经不再需要。它有助于清理系统,释放磁盘空间。
      sudo apt autoremove
      
    2. 手动添加 PPA
      如果 add-apt-repository 不工作,你可以手动添加 PPA:

      sudo echo "deb http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/deadsnakes-ppa.list
      sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A755776
      sudo apt update
      
    3. 安装 Python 3.12

      sudo apt install python3.12
      
    4. 验证安装

      python3.12 --version
      
    5. 安装依赖(如果需要):

      sudo apt install build-essential libssl-dev zlib1g-dev libncurses5-dev libnss3-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev
      

    如果问题依然存在,可以尝试使用 deadsnakes PPA 提供的其他方法:

    1. 下载并安装 add-apt-repository 工具

      sudo apt install software-properties-common
      
    2. 再次添加 PPA 并安装 Python 3.12

      sudo add-apt-repository ppa:deadsnakes/ppa
      sudo apt update
      sudo apt install python3.12
      
    3. 清理包缓存并重试安装

      sudo apt clean
      sudo apt update
      sudo apt install python3.12
      

    这些步骤应该能帮助你在 Ubuntu 20.04 上成功安装 Python 3.12。

    # 升级pip的方法
    $ sudo apt install python3-pip
    $ python -m pip install --upgrade pip
    Defaulting to user installation because normal site-packages is not writeable
    Requirement already satisfied: pip in ./.local/lib/python3.12/site-packages (24.0.0)
    

    三. 默认让python指定到python3.12,现在是3.8

    要将默认的 python 命令指向 python3.12,你可以使用以下步骤:

    1. 安装 python3.12(如果还没有安装):

      sudo apt update
      sudo apt install python3.12
      
    2. 更新 alternatives 系统
      使用 update-alternatives 命令来管理多个版本的 Python:

      sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
      sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2
      sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 3
      sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 4
      sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 5
      sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.12 6
      

      这里的数字 12 代表优先级,数字越大优先级越高。

    3. 选择默认版本
      运行以下命令以选择默认的 Python 版本:

      sudo update-alternatives --config python
      

      这会显示一个交互式菜单,允许你选择默认的 Python 版本。选择与 python3.12 对应的选项。

    4. 验证更改
      运行以下命令来验证更改是否生效:

      python --version
      

    详细解释

    1. 安装 python3.12
      确保系统中安装了所需版本的 Python。

    2. 更新 alternatives 系统

    3. --install /usr/bin/python python /usr/bin/python3.8 1:将 /usr/bin/python 指向 /usr/bin/python3.8,优先级设为 1
    4. --install /usr/bin/python python /usr/bin/python3.12 2:将 /usr/bin/python 指向 /usr/bin/python3.12,优先级设为 2
    5. 选择默认版本

    6. sudo update-alternatives --config python:显示一个菜单,允许你选择默认的 Python 版本。
    7. 验证更改

    8. python --version:检查当前默认的 Python 版本,确认更改已生效。

    按照这些步骤操作后,你的系统应该会默认使用 python3.12

    四. 使用建立软连接的方式

    使用软连接的方式将 python 命令指向 python3.12 可以通过以下步骤完成:

    1. 安装 python3.12(如果还没有安装):

      sudo apt update
      sudo apt install python3.12
      
    2. 移除现有的 python 软链接(如果存在):

      sudo rm /usr/bin/python
      
    3. 创建新的软链接
      python 命令指向 python3.12

      # ln -s [目标文件或目录] [链接名称]
      sudo ln -s /usr/bin/python3.12 /usr/bin/python
      
    4. 验证更改
      运行以下命令来确认更改是否生效:

      python --version
      

    详细步骤解释

    1. 安装 python3.12
      确保系统中安装了所需版本的 Python。

    2. 移除现有的 python 软链接

    3. sudo rm /usr/bin/python:移除现有的 python 软链接(如果存在)。这一步确保不会有冲突的软链接。
    4. 创建新的软链接

    5. sudo ln -s /usr/bin/python3.12 /usr/bin/python:创建一个新的软链接,将 /usr/bin/python 指向 /usr/bin/python3.12
    6. 验证更改

    7. python --version:检查当前默认的 Python 版本,确认更改已生效。

    完整命令

    将所有步骤整合在一起:

    sudo apt update
    sudo apt install python3.12
    sudo rm /usr/bin/python
    sudo ln -s /usr/bin/python3.12 /usr/bin/python
    python --version
    

    这样,你的系统应该会默认使用 python3.12

    五. 如何直接删除python3.12

    要直接删除 python3.12,可以使用以下步骤:

    1. 查找安装的 Python 3.12 包
      首先,检查系统中安装的 Python 3.12 相关包:

      dpkg -l | grep python3.12
      
    2. 删除 Python 3.12
      使用 apt 命令删除 Python 3.12 及其相关包:

      sudo apt remove --purge python3.12 python3.12-minimal
      
    3. 删除可能的残留文件
      在删除 Python 3.12 后,清理系统中可能的残留文件:

      sudo apt autoremove
      sudo apt clean
      
    4. 检查是否删除成功
      确认 Python 3.12 是否已被成功删除:

      python3.12 --version
      

    如果命令输出提示 command not found,则说明 Python 3.12 已成功删除。

    详细步骤解释

    1. 查找安装的 Python 3.12 包

    2. dpkg -l | grep python3.12:列出所有包含 python3.12 的已安装包。
    3. 删除 Python 3.12

    4. sudo apt remove --purge python3.12 python3.12-minimal:删除 python3.12 及其最小安装包,并清除其配置文件。
    5. --purge:表示同时删除包及其配置文件。
    6. 删除可能的残留文件

    7. sudo apt autoremove:删除系统中不再需要的依赖包。
    8. sudo apt clean:清理下载的包缓存。
    9. 检查是否删除成功

    10. python3.12 --version:检查 Python 3.12 是否已被成功删除。

    示例

    将所有步骤整合在一起:

    dpkg -l | grep python3.12
    sudo apt remove --purge python3.12 python3.12-minimal
    sudo apt autoremove
    sudo apt clean
    python3.12 --version
    

    通过这些步骤,你应该能够成功删除系统中的 Python 3.12。

    作者:AI大模型前沿研究

    物联沃分享整理
    物联沃-IOTWORD物联网 » 『Python学习笔记系列:如何设置PYTHONPATH环境变量让Python运行更顺畅』

    发表回复