导入不带.py扩展名的python模块

2024-06-28 19:14:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为foobar的文件(没有.py扩展名)。在同一个目录中,我有另一个python文件尝试导入它:

import foobar

但这只有在我将文件重命名为foobar.py时才有效。是否可以导入没有.py扩展名的python模块?

更新:该文件没有扩展名,因为我也将其作为独立脚本使用,我不想键入.py扩展名来运行它。

Update2:我将使用下面提到的symlink解决方案。


Tags: 模块文件pyimport目录脚本键入解决方案
2条回答

正如其他人提到的,您可以使用imp.load_源代码,但这会使您的代码更难阅读。我只建议您在需要导入名称或路径在运行时才知道的模块时使用它。

您不想使用.py扩展名的原因是什么?不想使用.py扩展的最常见情况是,python脚本也作为可执行文件运行,但您仍然希望其他模块能够导入它。如果是这种情况,那么将功能移到具有类似名称的.py文件中,然后使用foobar作为包装器可能是有益的。

可以使用imp.load_source函数(来自imp模块)从给定的文件系统路径动态加载模块。

foobar = imp.load_source('foobar', '/path/to/foobar')

这个SO discussion还显示了一些有趣的选项。

相关问题 更多 >