Python中PYTHONPATH与sys.path详解——看完不会用你打我
创始人
2024-11-10 19:34:37
0

一、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"

八、总结

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

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

相关内容

热门资讯

5分钟辅助!广西老友玩老师输怎... 5分钟辅助!广西老友玩老师输怎么版,好像是真的有辅助攻略(详细教程)1、5分钟辅助!广西老友玩老师输...
第8分钟辅助!东阳四副牌辅助,... 第8分钟辅助!东阳四副牌辅助,原来是真的有辅助插件(竟然有挂)东阳四副牌辅助破解侠是真的助透视。每个...
十分钟辅助!约局吧辅助器,其实... 十分钟辅助!约局吧辅助器,其实真的有辅助软件(讲解有挂)1、许多玩家不知道约局吧辅助器辅助怎么退出观...
第6分钟辅助!宝宝浙江辅助脚本... 第6分钟辅助!宝宝浙江辅助脚本,总是是真的有辅助方法(有挂神器)1、玩家可以在宝宝浙江辅助脚本线上大...
一分钟辅助!来几局辅助器开挂,... 一分钟辅助!来几局辅助器开挂,确实是真的有辅助插件(有挂技巧)1、来几局辅助器开挂免费脚本咨询教程、...
六分钟辅助!湖南赣湘互娱辅助脚... 六分钟辅助!湖南赣湘互娱辅助脚本,一贯真的有辅助工具(有挂分析)一、湖南赣湘互娱辅助脚本游戏安装教程...
三分钟辅助!川川云脚本破解,竟... 三分钟辅助!川川云脚本破解,竟然真的有辅助插件(确实有挂)川川云脚本破解辅助器是一种具有地方特色的麻...
第四分钟辅助!天天贵阳app修... 第四分钟辅助!天天贵阳app修改器,一直真的有辅助挂(有挂辅助)1、在天天贵阳app修改器插件功能辅...
2分钟辅助!新荣耀房卡辅助,竟... 2分钟辅助!新荣耀房卡辅助,竟然是有辅助插件(有挂功能)暗藏猫腻,小编详细说明新荣耀房卡辅助破解器有...
七分钟辅助!随意玩辅助器视频,... 七分钟辅助!随意玩辅助器视频,确实是有辅助插件(有挂解密)1、下载好随意玩辅助器视频正确养号方法之后...