当前位置: 首页 > 面试题库 >

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

景品
2023-03-14
问题内容

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

import foobar

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

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

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


问题答案:

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

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

该SO讨论还显示了一些有趣的选项。



 类似资料:
  • 问题内容: 我正在学习Python,但无法弄清楚导入的工作方式。 我从Python教程中了解到该文件初始化了一个程序包,并且可以在此处导入子程序包。 不过,我做错了。您能为我(以及将来的Python学习者)解释我做错了什么吗? 这是我正在尝试做的一个简化示例。 这是我的文件结构: 内容: 是空的。 包含: 最后,包含: 这就是我尝试使用OSX终端和Python 3运行hello_world.py的

  • 问题内容: 我一直在阅读有关文件的功能。据说我们在包含模块的文件夹中需要一个空文件,以便可以导入这些模块。但是,我尝试将文件夹路径添加到PYTHONPATH(Windows 7中为环境变量)。尽管此文件夹不包含文件,但我仍然可以从该文件夹导入模块。您能否解释一下在不存在的情况下如何导入这些模块? 谢谢, 最好的祝福 问题答案: 把一个文件夹变成一个包。这对于创建某种模块层次结构很有用,您可以在其中

  • 问题内容: 我试图了解关于Python(v2.7)导入机制的最佳实践。我有一个项目开始有所增长,可以说我的代码如下组织: 包名称为,在其下方,我有一个模块,其中包含该类的代码。因此,我对包,模块和类使用了相同的名称,但起初可能不太聪明。 为空,需要导入类,因此文件的一部分如下所示: 但是我后来又重新考虑了这一点,并且我认为最好在文件中包含所有导入内容。因此,我现在看起来像: 而我只需要导入: 虽然

  • 问题内容: 通过实验,我验证了当同一目录中同时存在编译的(或)和Plain时,首先导入文件;的,如果只输入文件未找到: 是否保证所有版本的Python都相同,并且我可以依靠它向仅在未找到文件时执行的文件添加逻辑吗? 问题答案: FWIW,我找不到参考说明,必须在py文件之前加载扩展,因此将其作为实现细节可能更安全(除非有人提供参考)。即使此细节对于所有版本都稳定到至少2.7。 导入模块时,它将首先

  • 问题内容: 如何从Python路径中获取不带扩展名的文件名? 问题答案: 获取不带扩展名的文件名: 输出: 重要说明:如果文件名具有多个点,则仅删除最后一个扩展名之后的扩展名。例如: 输出: 如果您需要处理这种情况,请参见下面的其他答案。

  • 我需要在Python中导入一个名为array_queue的模块。我检查了一下,如果我不使用它,就会出现一个提示:“array_queue imported but unused”。但是,如果我使用它并运行该程序,则会出现以下情况: ModuleNotFounderRror:没有名为“array_queue”的模块

  • 问题内容: 我有这个PHP代码: 如果我有一个名为的文件,则此函数返回。 我想做相反的事情,我希望函数不带扩展名就返回。 该文件只是变量中的字符串。 问题答案: 不需要所有这些。签出pathinfo() ,它为您提供了路径的所有组件。 手册中的示例: 代码输出: 或者,您只能获得某些部分,例如:

  • 问题内容: 我有一个Python项目,其中包含许多与distutils打包在一起的子模块。我想在C中构建一些Python扩展以生活在其中一些子模块中,但是我不明白如何使Python扩展生活在子模块中。以下是我正在寻找的最简单的示例: 这是我的Python扩展: 这是可行的: 在virtualenv中安装后,我可以这样做: 但是,我想生活在一个子模块中。我需要在此管道中进行哪些更改才能使Python