使用点表示法的Python导入无法按预期工作

2024-09-30 16:26:41 发布

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

我最近在python3.3.2中安装了一个库。我试图像这样从它导入一个模块:import cx_Freeze.freezer。但是,cx_冷冻室定义与我预期的不同,如IDLE中所示:

>>> ================================ RESTART ================================
>>> import cx_Freeze.freezer
>>> cx_Freeze.freezer
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    cx_Freeze.freezer
AttributeError: 'module' object has no attribute 'freezer'
>>> 

在命令行中也会发生同样的情况。我想我误解了当您使用带点符号的import时会发生什么;模块被分配给什么名称?在

为了解决这个看似的问题,我在重新启动shell之后尝试了import cx_Freeze.freezer as f,但结果与之前相同。有人能解释一下为什么这些导入语句不能给我访问模块的权限吗?在


Tags: 模块importmost定义calllastrestartmodule
1条回答
网友
1楼 · 发布于 2024-09-30 16:26:41

^{}包含以下内容:

version = "5.0"

import sys
from cx_Freeze.dist import *
if sys.platform == "win32":
    from cx_Freeze.windist import *
elif sys.platform == "darwin":
    from cx_Freeze.macdist import *
from cx_Freeze.finder import *
from cx_Freeze.freezer import *
from cx_Freeze.main import *

del dist
del finder
del freezer

这个问题的重要部分是from cx_Freeze.freezer import *和{}。第一行将cx_Freeze.freezer.__all__中列出的所有内容直接导入cx_Freeze包,第二行使{}不能直接使用。因此,您可能应该只使用cx_Freeze;它包含为外部使用而设计的cx_Freeze.freezer的所有部分。如果您需要cx_Freeze.freezer,也许要使用一些私有功能,您可以在sys.modules中找到它:

^{pr2}$

相关问题 更多 >