情况:-我的project_folder中有一个名为Calendar的模块-我想使用Python库中的内置Calendar类-
当我从日历导入Calendar中使用时,它抱怨,因为它试图从我的模块中加载。
有任何想法而不必重命名我的模块吗?
公认的解决方案包含一种现已弃用的方法。
这里的importlib文档为直接从python> = 3.5的文件路径中加载模块的更合适方法提供了一个很好的示例:
import importlib.util
import sys
# For illustrative purposes.
import tokenize
file_path = tokenize.__file__ # returns "/path/to/tokenize.py"
module_name = tokenize.__name__ # returns "tokenize"
spec = importlib.util.spec_from_file_location(module_name, file_path)
module = importlib.util.module_from_spec(spec)
sys.modules[module_name] = module
spec.loader.exec_module(module)
因此,您可以从路径加载任何.py文件,并将模块名称设置为所需的名称。因此,只需将设置module_name
为您希望模块在导入时使用的任何自定义名称即可。
要加载软件包而不是单个文件,file_path
应为软件包根目录的路径__init__.py
问题内容: 我正在编写一个小脚本,该脚本从目录获取文件名,并将其传递给另一个模块,然后该模块导入文件。 因此流程类似于1)获取模块名称(将其存储在变量中)2)将此变量名称传递给模块3)导入名称存储在变量名称中的模块 我的代码就像 问题在于,当它到达import语句时,它将modulename读取为真实的模块名称,而不是存储在此变量中的值。我不确定这在python中如何工作,解决这个问题的任何帮助都
目录结构 成功编译并生成out/calc-module目录。 模块-info.java
我使用python unittest框架做集成测试。为了消除混淆,我想以“集成测试”的方式继承TestCase类。TestCase”而不是“unittest”。TestCase". 此外,如果我也能做“import integrationtest”而不是“import unittest”,那就更好了,类似于“unittest.main()”,最好用“integrationtest.main()”来
问题内容: 我的内存中有一些Python文件,可能是StringIO。如何导入存储在内存中的模块文件?我不想将其保存到磁盘然后加载。 看起来像: 问题答案: 一种不错的方法是使用PEP 302中所述的自定义元导入挂钩。可以编写一个从字符串字典动态导入模块的类: 顺便说一句:如果您不想太多,而只想导入一个字符串,那么请坚持执行load_module方法。您只需要在里面。
问题内容: 在模块路径上是否可以有两个名称完全相同(但内容稍有不同)的模块? 据我所知,Java 9编译器没有对此抱怨。我有2个模块声明如下: 两者都包含包装,但包装内的内容不同。然后在我的主应用程序中,我希望导入此模块: 具有相同名称的两个模块都在我的模块路径上。 我希望在编译模块时,编译器会抱怨同一模块存在两次,但事实并非如此。这是否有效地意味着您可以在模块路径上使用同一jar的2个版本,而J
问题内容: 是否可以从多个源文件中构建一个内核模块,这些源文件中的一个与模块具有相同的名称? 例如:我要使用以下源文件构建“ mymodule.ko”: mymodule.c mymodule_func.c 这个makefile不起作用: 谢谢 问题答案: 我找到了解决方案,将源文件放在一个子文件夹中: 生成文件 src / mymodule.c src / mymodule_func.c
我正在迁移过去不使用本机JS模块的代码。 然后将被称为,这很好,因为单词有上下文。 但是,现在我将代码更改为使用JS模块: 然后将被称为,它没有上下文。现在我明白我可以做到: 但这就像是一个倒退,开始蓝精灵命名所有进口的东西。 是否有一种方法可以像Python中那样导入模块,然后调用模块的函数。例如,使用点等符号访问其功能,类似如下:
问题内容: 假设我有一个包含模块的软件包: 并且这些模块需要引用彼此包含的功能。似乎我的模块遇到了问题,因为有一个同名的标准模块。 例如,在我的模块同时需要我和标准python 模块的情况下,我会遇到麻烦,因为解释器会在程序包内部查找并找到我的模块,然后再遇到标准模块。 有没有办法解决?这是不可以的情况,并且模块名称不能重复使用吗? 有关封装哲学的任何解决方案和意见在这里都将很有用。 问题答案: