当前位置: 首页 > news >正文

『Python学习笔记』Python运行设置PYTHONPATH环境变量!

Python运行设置PYTHONPATH环境变量!

文章目录

  • 一. Python运行设置`PYTHONPATH`环境变量!
    • 1. 解释
    • 2. 为什么有用
    • 3. 示例
    • 4. vscode配置

一. 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 都会被设置为当前目录的上一级,确保能够找到并导入相应的模块。

http://www.lryc.cn/news/395249.html

相关文章:

  • 2024年06月CCF-GESP编程能力等级认证Python编程三级真题解析
  • 代码随想录算法训练营:20/60
  • Apache Seata应用侧启动过程剖析——RM TM如何与TC建立连接
  • Origin 的使用
  • MySQL相关知识点
  • 第4章 Vite模块化与插件系统(二)
  • 前端传到后端的data数组中有些属性值为空
  • 怎么批量下载网页里的图片和视频 如何批量下载一个网站的所有图片 如何批量下载网页视频文件 idm软件怎么下载
  • Python面试题:在 Python 中,如何处理文件操作?
  • 红日靶机1
  • Windows电脑PC使用adb有线跟无线安装apk包
  • 如何把harmonos项目修改为openharmony项目
  • 【QT】Qt智能指针QPointer、QSharedPointer、QWeakPointer、QScopedPointer
  • 设计模式探索:建造者模式
  • [Go] 字符串遍历数据类型问题
  • HJ41 称砝码
  • 如何使用Python脚本实现SSH登录
  • 2024年文化研究与数字媒体国际会议 (CRDM 2024)
  • 14-52 剑和诗人26 - RAG 和 VectorDB 简介
  • 如果MySQL出现 “Too many connections“ 错误,该如何解决?
  • 论文阅读:Rethinking Interpretability in the Era of Large Language Models
  • C++/Qt 信号槽机制详解
  • duplicate key value violates unique constraint
  • YOLOv10改进 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数
  • docker nginx mysql redis
  • Linux系统(CentOS)安装iptables防火墙
  • 华为的服务器创新之路
  • 对比service now和salesforce
  • 树状数组
  • 【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-