您的位置:首页 > 娱乐 > 八卦 > 『Python学习笔记』Python运行设置PYTHONPATH环境变量!

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

2024/10/5 19:11:10 来源:https://blog.csdn.net/abc13526222160/article/details/140178657  浏览:    关键词:『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 都会被设置为当前目录的上一级,确保能够找到并导入相应的模块。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com