【问题标题】:What does "The directory containing the input script" mean?“包含输入脚本的目录”是什么意思?
【发布时间】:2021-01-28 21:25:31
【问题描述】:

我已经用 Python 写了 4 年了,但我仍然没有完全理解导入系统。我发现即使你这样做,相对导入也会失败exactly by the book。当我在 Jupyter Lab/Notebook 工作时尤其如此。

许多人建议附加到 sys.path 变量来解决这个问题(尽管我不知道为什么导入不能像宣传的那样工作)。所以我决定阅读整个sys.path 的工作原理,并阅读它是这样初始化的:

6.1.2。模块搜索路径

当导入名为 spam 的模块时,解释器首先搜索具有该名称的内置模块。如果没有找到,它会在变量 sys.path 给出的目录列表中搜索名为 spam.py 的文件。 sys.path 从这些位置初始化:

  • 包含输入脚本的目录(或未指定文件时的当前目录)。
  • PYTHONPATH(目录名称列表,与 shell 变量 PATH 语法相同)。
  • 依赖于安装的默认值。

第一个项目符号是什么意思?请注意本节前一段中缺少“输入脚本”。是指spam.py吗?如果是这样,为什么要使用“输入”这个词。我没有看到任何正在发生的事情的输入。

任何人都可以澄清这种异常模糊/模棱两可的语言吗?

【问题讨论】:

    标签: python import path python-import


    【解决方案1】:

    据我所知,第一个项目符号是指包含您尝试运行的脚本的目录。更具体地说,它指的是试图导入模块的脚本。

    Python“代码”只是在解释器之上运行的脚本。您将脚本“输入”到解释器中。

    【讨论】:

    • 好的。这样就可以解释为什么父目录中的模块不能被子目录中的模块轻松导入,除非它们被添加到路径变量中。解决方法应该是相对导入,但在 Jupyter Notebooks 中失败了。这是一个单独的问题。