📜  目录.不支持 src 之外的相对导入. - 打字稿(1)

📅  最后修改于: 2023-12-03 15:40:59.017000             🧑  作者: Mango

目录不支持 src 之外的相对导入 - 打字稿

很多 programmer 在开发过程中都有遇到过这样的问题:当他们使用相对导入的方式去导入外部模块时,出现了“目录不支持 src 之外的相对导入”的错误信息。

这个错误信息的意思是,Python 程序在执行代码导入时,只接受以 src 目录为起点的相对导入方式。也就是说,如果你的代码文件不在 src 目录下,就会抛出这个错误。这个错误是由于 Python 语言的模块导入机制造成的。

模块导入机制

在 Python 中,模块可以通过 import 语句导入。当 Python 程序在执行 import 语句时,解释器会按下列顺序去查找指定的模块:

  1. 内置模块
  2. sys.path 中指定的路径
  3. PYTHONPATH 环境变量指定的路径
  4. 脚本文件的目录或当前工作目录

当程序找到了指定的模块后,它会先对模块进行编译,然后再将编译后的模块对象返回给程序使用。

相对导入

在 Python 中,模块使用相对导入方式导入其他模块。相对导入方式有以下几种:

  1. from .module import name
  2. from ..package import module
  3. from .. import module
  4. from . import module

其中,第一种方式是从当前模块的父目录下导入指定模块中的指定变量;第二种方式是从当前模块的父目录的 package 目录下导入指定模块;第三种方式是从当前模块的父目录下导入指定模块;第四种方式是从当前模块的当前目录下导入指定模块。

相对导入方式的好处是可以避免使用绝对路径,使代码更加灵活和可重用。

目录不支持 src 之外的相对导入

在使用相对导入方式时,如果代码文件不在 src 目录下,就会出现“目录不支持 src 之外的相对导入”的错误。这是因为 Python 程序在执行相对导入时,只支持以 src 目录为起点的相对导入方式。

如果想要避免这个问题,可以将代码文件移动到 src 目录下,或者在 sys.path 中添加当前代码文件所在的目录。例如:

import sys
sys.path.append('/path/to/code/file')
from module import name

这样,程序就可以正常导入指定的模块了。

总之,相对导入方式在 Python 中很重要,可以提高代码的灵活性和可读性。在使用相对导入时,我们需要特别注意导入路径和目录结构,避免出现“目录不支持 src 之外的相对导入”的错误。