带别名的Python导入模块
我是Python3的新手,目前正在学习如何创建Python模块。我已经创建了下面的包结构带别名的Python导入模块,python,Python,我是Python3的新手,目前正在学习如何创建Python模块。我已经创建了下面的包结构 maindir test.py package __init__.py subpackage __init__.py module.py 这是我的module.py文件 name="John" age=21 这是我的test.py文件 import package.subpackage.module prin
maindir
test.py
package
__init__.py
subpackage
__init__.py
module.py
这是我的module.py文件
name="John"
age=21
这是我的test.py文件
import package.subpackage.module
print(module.name)
当我运行test.py时,我收到了这个错误NameError:name“module”未定义
但是,当我将import语句更改为import package.subpackage.module as mymod
并使用print(mymod.name)
打印名称时,它的工作就如预期的那样。它的印刷名是约翰。
我不明白为什么它只处理第二种情况而不处理第一种情况。也许您尝试的是:
from package.subpackage import module
然后您可以引用模块
作为之后的名称
如果您这样做:
import package.subpackage.module
然后,您的模块将被精确地调用为
包.子包.模块
,只需稍加阅读,我现在就理解了这种行为。如果我错了,请纠正我
使用此import语句的import package.subpackage.module
样式,您必须使用其完全限定名访问对象。例如,在这种情况下
打印(包、子包、模块、名称)
使用别名,我可以使用import package.subpackage.module将长名称缩短为mymod
,并使用print(mymod.name)
简而言之,
打印(package.subpackage.module.name)
=打印(mymod.name)
使用打印(package.subpackage.module.name)
<代码>模块本身不在当前范围内。那么导入系统
打印(sys.path)
如何工作?@vivekratnaparkhi这是因为系统
是导入的名称。导入package.subpackage.module
时,导入的是名称package.subpackage.module
,而不是module
谢谢@icedtrees!我现在明白了。我想了解这种导入方式的行为import package.subpackage.module
。我仍然理解这种行为。您也可以如上所述导入短名称:从package.subpackage导入模块
然后打印(module.name)