Python如何处理sys.path.insert(path)和不同地导入package_path.module

时间:2018-09-04 18:16:13

标签: python pycharm

我正在使用pycharm,无法从以下项目结构的子类代码遵循的格式导航到基类

目录1      基类 目录2      儿童班 当我以这种方式导入类时,pycharm无法导航到基类,但是Python文件可以正确执行

sys.insert.path("../dir1/")
import baseclass

当我使用

导入课程时
import dir1.baseclass

让pycharm了解基类的位置,我使用快捷方式导航到基类。在这种情况下,Python脚本可以使用pycharm正确执行。

我无法理解python如何自动找出import dir1.baseclass中baseclass.py的路径,因为我从未提供过dir1的相对或绝对路径。是否自动假设dir1与子类位于同一目录级别。

为什么pycharm在这些语句的行为上有所不同,导航对于执行而言却是相同的?

1 个答案:

答案 0 :(得分:1)

基本上,当您调用 Python 来运行档案时,它将包含该档案的目录定义为工作目录。之后,Python的解释器尝试解析导入,并实现该导入,它首先在工作目录中搜索了这些导入。

但是,当您使用import dir1.baseclass时,您告诉Python该文件基类不在工作目录中,而是在其子目录之一中,在这种情况下,位于../WorkingDirecory/dir1/内部,因此python导航到那里并导入了该类。