相关疑难解决方法(0)

当存在具有相同名称的模块时从内置库导入

情况: - 我的project_folder中有一个名为calendar的模块 - 我想使用Python库中的内置Calendar类 - 当我使用日历导入日历时,它会抱怨因为它试图从我的模块加载.

我做了一些搜索,似乎无法找到问题的解决方案.

任何想法,而无需重命名我的模块?

python import

108
推荐指数
4
解决办法
5万
查看次数

Python冻结过程是什么?

Python 文档指出:

\n\n
\n

冻结模块是用 Python 编写的模块,其编译的字节码对象由 Python\xe2\x80\x99s freeze 实用程序合并到定制的 Python 解释器中。现在请参阅工具/冻结/。

\n
\n\n

http://docs.python.org/library/imp.html#imp.init_frozen

\n\n

我不明白。什么是冻结实用程序?如何使用?为什么会使用它?

\n

python freeze

7
推荐指数
1
解决办法
3778
查看次数

"import __hello__"如何工作?

最近我遇到了这个"Hello world"Python程序:

>>> import __hello__
Hello world!
Run Code Online (Sandbox Code Playgroud)

我想知道它是如何工作的以及如何查看__hello__模块的源代码 .

python import module

5
推荐指数
1
解决办法
1850
查看次数

在python3中使用importlib进行动态导入时出错

我一直在尝试importlib与python3(3.6)一起使用。

目录结构

main.py

#Note: I will only modify line 4 that uses importlib
import importlib
if __name__ == '__main__':
    print("In main.py")
    hello = importlib.import_module('hello', package='./')
    print("Loaded hello.py")
    hello.hello()
Run Code Online (Sandbox Code Playgroud)

你好

def hello():
    print('Hello world')
Run Code Online (Sandbox Code Playgroud)

文件夹/hello.py

def hello():
    print('Hello world in folder')
Run Code Online (Sandbox Code Playgroud)

观察结果

如果我做

hello = importlib.import_module('hello', package='./') 要么

hello = importlib.import_module('hello')

它从根文件夹导入hello.py并进行打印hello world

如果我做

hello = importlib.import_module('folder.hello')

它从根文件夹导入folder / hello.py并打印hello world in folder

但是如果我这样做

hello = importlib.import_module('hello', package='folder') 要么

hello = …

import python-import dynamic-import python-3.x python-importlib

5
推荐指数
1
解决办法
3511
查看次数

内置模块、标准模块和冻结模块之间的区别?

Python 模块、内置模块、标准模块和冻结模块有什么区别?


这些术语来自官方文档本身。

加载器文档中提到了Python 模块内置模块

装载机必须满足以下要求:

  • 如果模块是 Python 模块(而不是内置模块或动态加载的扩展),加载器应该在模块的全局命名空间 (module.__dict__) 中执行模块的代码。

顶级组件文档中引用了标准模块

所有内置和标准模块均可用

Frozen 模块自己的导入器,描述为

冻结模块的进口商

尽管在官方文档和核心代码中有提及,但在词汇表索引BFMPS)或(显然)中没有对 Python 模块、内置模块、标准模块或冻结模块的明确定义别处。


定义:内置模块

这是我可以为内置模块提出的最佳定义:

内置模块是一种扩展模块,其在所列出的(即用C语言编写,Java和.NET等)sys.builtin_module_names属性。请注意,此列表可能因 Python 解释器而异(即 Cython 的内置模块可能不是 IronPython 的内置模块等)。

我从以下来源拼凑了这个定义:

标准库文档指出,

该库包含内置模块(用 C 编写)

importlib.machinery.BuiltinImporter文档的状态,

所有已知的内置模块都列在sys.builtin_module_names.

sys.builtin_module_names反过来状态属性的文件,

编译到此 Python 解释器中的所有模块的名称。(此信息无法通过任何其他方式获得) …

python python-3.x

5
推荐指数
1
解决办法
402
查看次数