情况:-我的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为您希望模块在导入时使用的任何自定义名称即可。
module_name
要加载软件包而不是单个文件,file_path应为软件包根目录的路径__init__.py
file_path
__init__.py