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

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

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

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

在我的项目中,我现在介绍了一个约定,即每个客户一个名称空间。在每个客户文件夹(

cust1
cust2
等)中,都有一个
__init__.py
包含以下代码的文件:

import pkgutil__path__ = pkgutil.extend_path(__path__, __name__)

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

正如解释在这里,

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

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

from cust1.proj1.pack1.mod1 import somethingfrom cust3.proj4.pack1.mod4 import something_elsefrom cust3.proj1.pack4.mod4 import yet_something_else

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

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

但这对我来说似乎是可以接受的,尤其是考虑到我需要花很少的精力来维持这一惯例。为该项目

sys.path
扩展
/path/to/projects/cust1/proj1/Development/pre/python

在一个旁注中,我注意到

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



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5640205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存