Python的模块和包以及代码中引用报错等各种问题一次性说清楚

  1. python包的引用规则

总的来说,不要被PycharmIDE所提供的便捷所迷惑,应该直接看Python语言本身的调用规则,总结规则如下:

只有永久加入到环境目录下的包和模块才能不sys.path.append导入就直接使用,否则必须用sys.path.append导入,这里面存放的是一个路径的列表,虽然使用绝对路径和相对路径都可以, 但是当调用的包和本身没有经常放在一起的话应该用绝对路径。

必须注意,sys.path.append添加的路径可以是包也可以是模块,但是只寻找一代目录,下一级目录不会找,例如,有一个包是/lib/a/b,(a和b都是包) 如果代码中使用了 import b,则sys导入路径的时候必须精确到/lib/a这一级别,如果代码中使用了from a import b 则必须精确到 lib/这一层。

需要注意一点常识, import只能导入模块,函数,变量等,但是不能再import后面跟包名,否则无法识别, from之后可以跟路径名,包名和模块名
这样说来, from和import导入内容重合的部分只有模块。但是当模块外部没有包的时候不能用from导入。例如import sys 不能用 from sys。

进一步地,可以这么总结,python引入代码的顺序是 sys.path.append(xxx) —> from xxx import yyy 其中xxx可以是路径或者包,只要是正常的路径即可。

需要格外注意的是,在Pycharm中执行代码的时候会自动的将该项目的根目录和正在执行的py文件所在目录加入到sys.path下,但是在终端执行的时候项目根目录并不会加入path中,所以Pycharm中执行成功的代码终端执行未必正确。

发布了71 篇原创文章 · 获赞 27 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/github_34777264/article/details/86631743