在Python(Django)中导入包时,名称不一致
我有一个Django项目,其结构如下在Python(Django)中导入包时,名称不一致,python,django,import,python-import,Python,Django,Import,Python Import,我有一个Django项目,其结构如下 project/ package1/ __init__.py api.py views.py package2/ __init__.py api.py views.py __init__.py urls.py wsgi.py 在package1/api.py中,我执行以下导入: from.view导入我的函数 执行此操作时
project/
package1/
__init__.py
api.py
views.py
package2/
__init__.py
api.py
views.py
__init__.py
urls.py
wsgi.py
在package1/api.py
中,我执行以下导入:
from.view导入我的函数
执行此操作时,我的package1/views.py
模块中的\uuu name\uuu
值是project.package1.views
,这正是我想要的
但是,当我在package2/api.py
中执行相同操作时:
from.view导入我的功能2
我得到了package2.views
对于\uuuu name\uuuu
,它缺少项目前缀
我可以通过使用project.package2.views中的完整路径来解决这个问题,但我不明白为什么它适用于一个包而不适用于另一个包
我的\uuuuu init\uuuuuuu
文件中也没有任何东西会改变导入
的工作方式。你用\uuuu name\uuuuuu
做什么?@DanielRoseman我正在用logging.getLogger(\uuu name\uuuuu)
设置记录器。当我得到简化路径时,它会建立一个全新的记录器。不过,我相信其影响远不止这些。\uuuu name\uuuu
似乎是sys.modules
注册每个模块的方式。因此,如果我有时得到完整路径,有时得到一个缩写路径,那么我相信sys.modules
将以不同的名称导入同一模块的两个实例。您使用\uuu name\uuuuu
做什么?@DanielRoseman我正在使用logging.getLogger(\uu name\uuu)
设置记录器。当我得到简化路径时,它会建立一个全新的记录器。不过,我相信其影响远不止这些。\uuuu name\uuuu
似乎是sys.modules
注册每个模块的方式。因此,如果我有时得到完整路径,有时得到一个缩写路径,那么我相信sys.modules
将以不同的名称导入同一模块的两个实例。