您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python导入路径:在不同文件夹中具有相同名称的软件包

python导入路径:在不同文件夹中具有相同名称的软件包

解决我的问题的方法,尽管起初可能并不明显。

在我的项目中,我现在介绍了一个约定,即每个客户一个名称空间。在每个客户文件夹(cust1cust2等)中,都有一个__init__.py包含以下代码文件

import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)

__init__.py程序包中的所有其他文件都是空的(主要是因为我还没有时间去弄清楚它们的其他用途)。

正如解释在这里extend_path可以确保Python是知道有一个包,身体的其他位置并在多个子包- 从我的理解-解释则不会停止搜索后未找到的第一个包路径下的模块它在中遇到sys.path,但在中搜索所有路径__path__

我现在可以以一致的方式访问所有项目之间的所有代码,例如

from cust1.proj1.pack1.mod1 import something
from cust3.proj4.pack1.mod4 import something_else
from cust3.proj1.pack4.mod4 import yet_something_else

不利的一面是,我不得不创建一个更深层次的项目文件夹结构:

/path/
  to/
    projects/
      cust1/
        proj1/
          Development/
            code/
              python/
                cust1/
                  __init__.py   <--- contains code as described above
                  proj1/
                    __init__.py <--- empty
                    pack1/
                    __init__.py <--- empty
                    mod1.py

但这对我来说似乎是可以接受的,尤其是考虑到我需要花很少的精力来维持这一惯例。为该项目sys.path扩展/path/to/projects/cust1/proj1/Development/code/python

一个旁注中,我注意到__init__.py在同一个客户的所有文件sys.path,无论我从哪个项目中导入内容,都会执行路径中第一个出现的文件

python 2022/1/1 18:31:36 有338人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶