『Python学习笔记系列:如何设置PYTHONPATH环境变量让Python运行更顺畅』
Python运行设置PYTHONPATH环境变量! |
文章目录
一. 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 在导入模块时,会按照一定的顺序在多个地方查找模块:
- 当前脚本所在的目录
PYTHONPATH
环境变量中指定的目录- 标准库目录和第三方库的安装目录(如
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)的发行版模板。你可以尝试以下步骤来解决这个问题:
-
确保系统更新:
# 这个命令会从所有配置的源(包括默认的 Ubuntu 仓库和任何添加的 PPA)下载最新的软件包信息。这样可以确保系统知道所有软件包的最新版本。 sudo apt update #这个命令会升级系统中已安装的所有软件包到最新版本。它只会升级那些不会引起现有软件包依赖关系变化的包。 sudo apt upgrade # 这个命令不仅会升级现有的软件包,还会处理依赖关系的变化,安装或删除必要的软件包。它比 apt upgrade 更加全面,适合在系统需要大规模更新时使用。 sudo apt dist-upgrade # 这个命令会移除系统中不再需要的包,这些包通常是之前安装的软件包的依赖包,但现在已经不再需要。它有助于清理系统,释放磁盘空间。 sudo apt autoremove
-
手动添加 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
-
安装 Python 3.12:
sudo apt install python3.12
-
验证安装:
python3.12 --version
-
安装依赖(如果需要):
sudo apt install build-essential libssl-dev zlib1g-dev libncurses5-dev libnss3-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev
如果问题依然存在,可以尝试使用 deadsnakes
PPA 提供的其他方法:
-
下载并安装
add-apt-repository
工具:sudo apt install software-properties-common
-
再次添加 PPA 并安装 Python 3.12:
sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install python3.12
-
清理包缓存并重试安装:
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
,你可以使用以下步骤:
-
安装
python3.12
(如果还没有安装):sudo apt update sudo apt install python3.12
-
更新
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
这里的数字
1
和2
代表优先级,数字越大优先级越高。 -
选择默认版本:
运行以下命令以选择默认的 Python 版本:sudo update-alternatives --config python
这会显示一个交互式菜单,允许你选择默认的 Python 版本。选择与
python3.12
对应的选项。 -
验证更改:
运行以下命令来验证更改是否生效:python --version
详细解释
-
安装
python3.12
:
确保系统中安装了所需版本的 Python。 -
更新
alternatives
系统: --install /usr/bin/python python /usr/bin/python3.8 1
:将/usr/bin/python
指向/usr/bin/python3.8
,优先级设为1
。--install /usr/bin/python python /usr/bin/python3.12 2
:将/usr/bin/python
指向/usr/bin/python3.12
,优先级设为2
。-
选择默认版本:
sudo update-alternatives --config python
:显示一个菜单,允许你选择默认的 Python 版本。-
验证更改:
python --version
:检查当前默认的 Python 版本,确认更改已生效。
按照这些步骤操作后,你的系统应该会默认使用 python3.12
。
四. 使用建立软连接的方式
使用软连接的方式将 python
命令指向 python3.12
可以通过以下步骤完成:
-
安装
python3.12
(如果还没有安装):sudo apt update sudo apt install python3.12
-
移除现有的
python
软链接(如果存在):sudo rm /usr/bin/python
-
创建新的软链接:
将python
命令指向python3.12
:# ln -s [目标文件或目录] [链接名称] sudo ln -s /usr/bin/python3.12 /usr/bin/python
-
验证更改:
运行以下命令来确认更改是否生效:python --version
详细步骤解释
-
安装
python3.12
:
确保系统中安装了所需版本的 Python。 -
移除现有的
python
软链接: sudo rm /usr/bin/python
:移除现有的python
软链接(如果存在)。这一步确保不会有冲突的软链接。-
创建新的软链接:
sudo ln -s /usr/bin/python3.12 /usr/bin/python
:创建一个新的软链接,将/usr/bin/python
指向/usr/bin/python3.12
。-
验证更改:
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
,可以使用以下步骤:
-
查找安装的 Python 3.12 包:
首先,检查系统中安装的 Python 3.12 相关包:dpkg -l | grep python3.12
-
删除 Python 3.12:
使用apt
命令删除 Python 3.12 及其相关包:sudo apt remove --purge python3.12 python3.12-minimal
-
删除可能的残留文件:
在删除 Python 3.12 后,清理系统中可能的残留文件:sudo apt autoremove sudo apt clean
-
检查是否删除成功:
确认 Python 3.12 是否已被成功删除:python3.12 --version
如果命令输出提示 command not found
,则说明 Python 3.12 已成功删除。
详细步骤解释
-
查找安装的 Python 3.12 包:
dpkg -l | grep python3.12
:列出所有包含python3.12
的已安装包。-
删除 Python 3.12:
sudo apt remove --purge python3.12 python3.12-minimal
:删除python3.12
及其最小安装包,并清除其配置文件。--purge
:表示同时删除包及其配置文件。-
删除可能的残留文件:
sudo apt autoremove
:删除系统中不再需要的依赖包。sudo apt clean
:清理下载的包缓存。-
检查是否删除成功:
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大模型前沿研究