问答

python导入的目录查找规则,如下报错是什么原因?

作者:admin 2021-04-22 我要评论

请问python导入的目录查找规则是什么,为什么会有如下现象 test1中,import test2 --正常;test1中,from directory1 import test2 --正常;test1中,from direc...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

请问python导入的目录查找规则是什么,为什么会有如下现象

test1中,import test2 --正常;
test1中,from directory1 import test2 --正常;
test1中,from directory1.directory2 import test4 --正常;
test3中,import test2 --异常:No module named test4
test3中,from directory2 import test5 --异常:Unresolved reference 'directory' 

目录结构如下,工程内有test1.py、tes2.py、directory1文件夹;
directory1文件夹下有test3.py、tes4.py、directory2文件夹;
directory2文件夹下有test5.py文件

--test1.py
--test2.py
--directory1--test3.py
--test4.py
--directory2--test5.py

###

python 中导包有以下两种情况:

  • python 中导入包默认以当前执行脚本所在目录作为首选搜索项,可以向下检索,即 test1.py 中可以通过 import directory1.test3 来导入下级的包。
  • 当需要从 test3.py 中导入 test2.py 时(上级目录或其他目录),则需要先将 test2.py 所在的目录路径加入到 sys.path 中才可以导入。

    程序启动时将初始化本列表,列表的第一项 path[0] 目录含有调用 Python 解释器的脚本。如果脚本目录不可用(比如以交互方式调用了解释器,或脚本是从标准输入中读取的),则 path[0] 为空字符串,这将导致 Python 优先搜索当前目录中的模块。注意,脚本目录将插入在 PYTHONPATH 的条目之前。

另外推荐看一看官方文档 import 语句导入系统sys.path

###

python 导入包时,是按 sys.path 里面的路径为根搜索的,默认是包含当前目录的,当前目录的子目录不包含。如果在非根下的包要导入同级包,用语法 from . import xxxx

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • python导入的目录查找规则,如下报错是

    python导入的目录查找规则,如下报错是

  • python爬取数据

    python爬取数据

  • mysql15分钟自动断开连接

    mysql15分钟自动断开连接

  • Django自带测试服务器可以正常启动,使

    Django自带测试服务器可以正常启动,使

腾讯云代理商
海外云服务器