尝试从同一目录中的另一个文件导入函数时,使用 from .mymodule import myfunction 或 from mymodule import myfunction 可以导致错误。原因在于包含要导入的函数的模块是否位于包内。
当模块位于包内时,相对导入起作用。要创建包,包含模块的目录中必须存在 __init__.py 文件。然而,确保模块有时可以作为脚本运行也很重要。
包含多个模块和主脚本的包的常见布局如下如下:
mypackage/
内mymodule.py:
# Exported function def as_int(a): return int(a) # Test function for module def _test(): assert as_int('1') == 1 if __name__ == '__main__': _test()
在 myothermodule.py 中:
# Import exported function from the mymodule from .mymodule import as_int # Exported function def add(a, b): return as_int(a) + as_int(b) # Test function for module def _test(): assert add('1', '1') == 2 if __name__ == '__main__': _test()
在 main.py 中:
# Import exported function from myothermodule from mypackage.myothermodule import add def main(): print(add('1', '1')) if __name__ == '__main__': main()
运行 main.py 或 mypackage/mymodule.py 时,代码执行没有问题。但是,尝试运行 mypackage/myothermodule.py 会导致与所使用的相对导入相关的错误(from .mymodule import as_int)。
有两种替代方法可以解决此问题:
以上是将模块作为脚本运行时如何处理 Python 包中的相对导入?的详细内容。更多信息请关注PHP中文网其他相关文章!