Python import的搜索路径和不可以import的解决方法 (On Linux)
参考:
2018年10月5日python相对引入和绝对引入详解_i_can_do_it!-CSDN博客_python 相对引用
首先说明:python中“模块”(Module)的概念就是.py文件。
我们可以使用 import 语句来引入模块。当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
- 1、当前目录(准确说就是当前执行的入口文件所在的目录)
- 2、sys.path中的每个目录。
有说法说和PYTHONPATH以及什么默认安装路径有关,没有查证过。但是以上两者一定包括。
因此,如果想将某个路径加入搜索目录列表,就直接使用sys.path.appand(路径)
另外一个常见的问题就是,import的模块和入口文件在同一目录,在windows下会无法import。(但是我在Linu下试了就可以)。
这样的解决方法就是将模块放入一个目录中,然后import 目录.模块
import的本质就是将代码复制到当前文件中。
举例:
在项目的三级目录下有一个print(os.listdir()).
当入口文件调用到他的时候,打印的就是入口文件所在的目录的信息,而不是三级目录的信息。可以体现这个本质。
另外,在一个项目的某个文件中import的时候,始终是要将入口文件所在目录作为import的搜索路径。这一点当入口文件所在目录不是项目顶级目录的时候可能会引起困难,解决方法是在入口文件的第一二行(在import其他包之前)就sys.path.append(项目顶级目录)。
另外,不推荐用相对引用,这个用起来比绝对引用麻烦很多。