Python中PYTHONPATH与sys.path详解——看完不会用你打我

一、PYTHONPATH是什么

PYTHONPATH是python查找模块和包的路径,当导入模块时,python解释器将按顺序在PYTHONPATH下寻找。

通过sys.path可以查看PYTHONPATH的值,路径列表的第一个元素为空字符串,代表的是相对路径下的当前目录,当我们运行python文件时会把本文件的实际物理路径作为第一个元素的值。例如:C:\TestProject\PythonProject01 > python src/main.py 和
C:\TestProject\PythonProject01\src > python main.py,最终都是把C:\TestProject\PythonProject01\src作为PYTHONPATH第一个元素的值。

由于在导入模块的时候,解释器会按照列表的顺序搜索,直到找到第一个模块,所以优先导入的模块为同一目录下的模块.

二、PYTHONPATH值的来源

PYTHONPATH中的路径是基于Python可执行文件(python.exe)的路径然后再查找几处地标文件和目录(本解释来自官方文档)。

 

三、环境变量中添加PYTHONPATH变量

当我们在环境变量中添加PYTHONPATH之后,sys.path会自动把PYTHONPATH的值添加进来。

四、运行按钮执行功能项目python文件时,.env和settings.json与PYTHONPATH的关系

总结如下:

  • .env文件不存在或文件存在但没配置PYTHONPATH则优先使用settings.json中的PYTHONPATH
  • .env文件配置了PYTHONPATH则优先使用.env中的PYTHONPATH

1、没有.env文件 + settings.json的PYTHONPATH="."

2、.env没设置PYTHONPATH + settings.json的PYTHONPATH="."

3、.env的PYTHONPATH="." + settings.json的PYTHONPATH="."

4、.env的PYTHONPATH="./src" + settings.json的PYTHONPATH="."

5、.env的PYTHONPATH="./src999" + settings.json的PYTHONPATH="."

五、运行按钮执行pytest项目python文件时,.env和settings.json与PYTHONPATH的关系

总结如下:

  • 仅.env配置的PYTHONPATH对sys.path有效
  • settings.json配置的PYTHONPATH对sys.path无效

1、没有.env文件 + settings.json的PYTHONPATH="./src"

2、.env没设置PYTHONPATH + settings.json的PYTHONPATH="./src"

3、.env的PYTHONPATH="." + settings.json的PYTHONPATH="./src"

4、.env的PYTHONPATH="./src" + settings.json的PYTHONPATH="./src"

5、.env的PYTHONPATH="./src999" + settings.json的PYTHONPATH="./src"

六、命令执行功能项目python文件时,.env和settings.json与PYTHONPATH的关系

总结如下:

  • 仅settings.json配置的PYTHONPATH对sys.path有效
  • settings.json中PYTHONPATH的 [.] 指执行python命令时所处的路径
  • .env配置的PYTHONPATH对sys.path无效

1、.env的PYTHONPATH="./src999" + settings.json没设置PYTHONPATH

2、.env的PYTHONPATH="./src999" + settings.json的PYTHONPATH="."

3、.env的PYTHONPATH="./src999" + settings.json的PYTHONPATH="./src"

七、命令执行pytest项目python文件时,.env和settings.json与PYTHONPATH的关系

总结如下:

  • 仅settings.json配置的PYTHONPATH对sys.path有效
  • settings.json中PYTHONPATH的 [.] 指执行python命令时所处的路径
  • .env配置的PYTHONPATH对sys.path无效

1、.env的PYTHONPATH="./src" + settings.json没设置PYTHONPATH

2、.env的PYTHONPATH="./src" + settings.json的PYTHONPATH="."

3、.env的PYTHONPATH="./src" + settings.json的PYTHONPATH="./src"

4、.env的PYTHONPATH="./src" + settings.json的PYTHONPATH="./src999"

八、总结

四、五、六、七节开头就是总结,后续内容是结论的验证过程。

整理这篇文章真是不太容易,如果这篇文章对你有帮助,请点赞、评论支持下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/583630.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

特斯拉携手百度攻克在华推广辅助驾驶难题,马斯克意外访华成果显著

特斯拉近日宣布与科技巨头百度达成合作协议,共同为中国市场提供地图和导航服务,以进一步推动其辅助驾驶系统的广泛应用。这一重要进展得益于特斯拉CEO埃隆马斯克上周的意外访问。 更多消息:AI人工智能行业动态,aigc应用领域资讯 …

盼你快治好肺癌,处死360那个鬼

近日《网易首页>网易号》发表《周鸿祎突然咳嗽不停,三锥子扎不出血,网友怀疑是癌症》一文,引发网络热议不断。有网友发布一张周鸿祎朋友圈的图片显示,周鸿祎因为“咳嗽不停”在治疗。 周鸿祎在朋友圈写到“咳嗽不停&#xff0…

数之寻软件怎么样?

数之寻软件是一款功能强大的数据恢复和备份软件,以下是对其特点和功能的详细评价: 一、数据恢复方面: 高效的数据恢复能力:数之寻软件采用了先进的算法和数据恢复技术,能够快速有效地恢复丢失或损坏的数据。无论是文…

stm32f103外设学习

RTC STM32F103C8T6基于HAL库制作RTC时钟_stm32f103c8t6 rtc-CSDN博客 【STM32】HAL库 STM32CubeMX教程十三---RTC时钟_基于stm32f407hal库的rtc实时时钟-CSDN博客 方案 有三个时钟,我们选择LSE时钟(前两个时钟是受VDD影响的,而且LSI不稳定有温漂) 有…

数字孪生智慧工厂

万界星空科技数字孪生可视化平台打造的智慧工厂运营管理系统,支持融合工业大数据、物联网、人工智能等各类信息技术,整合工厂现有信息系统的数据资源,通过数字孪生技术将真实的工厂还原。 设备运检可视化 提供统一的生产运检可视化管理平台&…

Windows命令行基本命令

目录 什么是相对路径和绝对路径? 一、目录(文件夹)和文件操作 1.cd命令 用于切换目录 2.dir命令 用于显示目录和文件列表 3.md或mkdir命令 创建文件,也可以创建多级子目录 4.rd命令 用于删除目录 5.move命令 用于移动…

外包干了16天,技术倒退明显

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

HackMyVM-Slackware

目录 信息收集 arp-scan nmap nikto whatweb WEB web信息收集 gobuster wfuzz hydra ssh连接 提权 系统信息收集 get root 信息收集 arp-scan ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:9d:6d:7b, IPv4…

Linux提权--SUID提权内核漏洞本地用户提权

免责声明:本文仅做技术交流与学习,请不要乱搞破坏... 目录 SUID提权 漏洞成因 提权过程: 手工命令探针: 参考利用: 脚本探针: LinEnum.sh traitor linuxprivchecker等等... Linux命令的利用: find命令 利用nc反弹 利用python反弹--棱角 内核漏洞本地用…

鲲鹏华为云--OBS

文章目录 1.创建桶2.上传对象3.下载对象4.分享对象5. 删除对象6.删除桶 1.创建桶 创建桶 2.上传对象 点击创建的桶–“上传对象” 拖拽本地文件或文件夹至“上传对象”区域框内添加待上传的文件。 也可以通过单击“上传对象”区域框内的“添加文件”,选择本地…

智慧校园建设新取向与新规范

通过对智慧校园建设与应用的相关文献进行研究以及对已发布的智慧校园建设规范标准进行内容分析,智慧校园建设呈现出新的价值取向和规范。 落实立德树人根本任务 党的十九大报告中指出,“要全面贯彻党的教育方针,落实立德树人根本任务&#xf…

二叉树的遍历算法

目录 1.二叉树结构 2.广度优先搜索二叉树(迭代算法) 3.深度优先搜索二叉树(递归算法) 1.二叉树结构 一个父结点,至多可以连接左右两个子节点 Java构造树结构——其实是 自定义树结点类型 public class TreeNode {in…

【笔记1】从零开始做一个男头的流程(超级详细)

目录 大体 眼窝 鼻子 脖子 耳朵 嘴巴1 颧骨 嘴巴2 眼睛 头 开始细化 大体 眼窝 嘴巴 鼻子 大体 注意!!先整体后局部,一开始不要加太多的线,尽量先用最少的线调整出一个大体的结构。 1.准备好参考图,在…

新一代大数据平台,为什么选择中国移动梧桐数据库?

个人介绍:艺名司镜233,是中国移动梧桐数据库研发团队成员,从事相关的技术开发近5年了。最让我觉得自豪的不是在研发这款数据库,而是我们用代码,切实地帮助企业解决数据的困扰,切实地解决社会的问题。 本篇文…

MySQL Binlog 闪回与分析

文章目录 前言1. 修改 event 实现闪回1.1 binlog 结构1.2 闪回案例1.3 方法总结 2. 解析文本闪回2.1 mysqlbinlog2.2 闪回案例2.3 方法总结 3. 在线订阅闪回3.1 mysql-replication3.2 binlog2sql3.3 方法总结 4. Binlog 分析方法4.1 分析场景4.2 辅助定位事务4.3 方法总结 5. 平…

二维码门楼牌管理应用平台:智慧城市的新引擎

文章目录 前言一、数据管理:打造智慧城市的数据基石二、数据应用:推动城市管理的智能化升级三、展望未来:构建更加智慧的城市管理体系 前言 随着城市化的快速推进,城市管理面临着前所未有的挑战。二维码门楼牌管理应用平台作为一…

【SpringBoot】Spring Boot自动配置概览

目录 背景自动装配/自动配置springboot是如何实现自动配置的核心注解AutoConfigurationImportSelector 类的继承体系Spring Boot 提供的条件注解示例注意版本 背景 没有 Spring Boot 的情况下,我们引入第三方依赖之后,需要手动配置。 比如需要手动将引入…

基于Android Studio 制作仿微信APP界面完成在线聊天发布朋友圈等功能

🍅文章末尾有获取完整项目源码方式🍅 目录 一、引言 二、视频效果 三、前期准备 四、详细设计与实现 1.启动页 2.登陆注册页 3.登录页 4.注册页 5.首页 6.聊天页面 7.通讯录页面 8.发现页面 9.我的页面 10. 个人信息页面 11.修改昵…

Spring Boot | Spring Security ( SpringBoot安全管理 )、Spring Security中 的 “自定义用户认证“

目录 : Spring Boot 安全管理 :一、Spring Security 介绍二、Spring Security 快速入门2.1 基础环境搭建 :① 创建Spring Boot 项目② 创建 html资源文件③ 编写Web控制层 2.2 开启安全管理效果测试 :④ 添加 spring-boot-starter-security 启动器⑤ 项目启动测试 三…

Dockerfile部署LNMP

目录 一、项目模拟 1. 项目环境 2. 服务器环境 3. 任务需求 二、Linux系统基础镜像 三、Nginx 1. 建立工作目录 2. 编写Dockerfile脚本 3. 准备nginx.conf配置文件 4. 生成镜像 5. 创建自定义网络 6. 启动镜像容器 7. 验证nginx 四、Mysql 1. 建立工作目录 2. …
最新文章