我正在尝试创建一个可与其他项目插入的import语句。
此声明位于网址.py你知道吗
所以这是可行的:
from forum.urls import urlpatterns
# Base Class: <type 'list'>
但这行不通:
from settings import ROOT_URLCONF as project_urls
urlpatterns = __import__(project_urls)
# Base Class: <type 'module'>
我怎样才能让后者工作呢?你知道吗
Tags:
所以您想要有相对于早期导入的import语句?你知道吗
肯定是我曾经试过的。我有一些很长的import语句,它们有一个共同的根,所以我试着把它分解出来。我无法让它与直接的导入语句一起工作,但可能我没有足够努力。你知道吗
请记住,import语句的默认行为将创建一个模块对象。它会把它绑在一起系统模块,然后使用import语句中的名称将其绑定到当前模块的命名空间中。见http://docs.python.org/tutorial/modules.html。你知道吗
模块对象具有命名空间。如果一个模块不是一个包,那么它的名称空间来自于对该模块的.py文件内容的求值。但是,如果它是一个包,那么名称空间来自包中的
__init__.py
模块。包中的其他模块不会自动导入,并且在包的命名空间中不可用。你必须分别导入它们。你知道吗from…import语句将模块加载到系统模块. 然后它会将对象从导入中引用的模块中拉出。最后,它使用import语句中的名称将该对象绑定到当前模块的命名空间中。基本上是将绑定从一个命名空间复制到另一个命名空间。老实说,我发现当你以后使用它时,它通常会混淆名称的来源(所以我不怎么做)。你知道吗
切中要害:
使用
__import__
是绕过import语句限制的一种方法。见the python documentation。但是,如果使用from..import语句,不要尝试重用__import__
中的结果名称,除非它指向模块对象(可能不是)。导入只需要一个以点分隔的模块名序列。你知道吗另外,请记住,仅放置显式导入可能是指示对象来自何处的更干净的方法。你知道吗
相关问题 更多 >
编程相关推荐