在Python(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导入我的函数 执行此操作时

我有一个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导入我的函数

执行此操作时,我的
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
将以不同的名称导入同一模块的两个实例。