python导入具有相同根包名称和不同位置的不同子包

亚历克斯

我想知道是否有人可以阐明这一点。我们有多个具有相同根软件包的软件包库,例如a我也有a.b位于X的包和a.c位于Y的。X和Y都在我的容器中PYTHONPATH,当我这样做时:

import a.c
import a.b

我收到一个错误:"No module named b"围绕它看完后我看来,一旦a.c被加载蟒蛇约写入信息a,以及,当我来干什么a.b,因为它有关于信息a已经它从来没有什么麻烦事看在位置X的a.b和抛出没有名为模块的错误b可以被发现。

此外,我发现PYTHONPATH似乎在指定X和Y的顺序会影响导入。例如,当我做

PYTHONPATH=$PYTHONPATH:X:Y python
>>> import a.b    # works
>>> import a.c    # fails

但是如果我这样做

PYTHONPATH=$PYTHONPATH:Y:X python
>>> import a.b    # fails
>>> import a.c    # works

是正确的,如果是这样,我该如何解决?使用通用的模块根名称,并且将不同的子包驻留在不同的项目等中,这很方便。当然,我从Java的角度出发,可以进行这种重叠。

亚历克斯

我找到了相关的问题,但是失去了链接。

解决方案包括:

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

所有项目的根源__init__.py在这种情况下,BOTH在位置XY ^如果您有多个级别的子包,则仍只需包含一次即可。a/__init__.py

让我和文档extend_path,而信息是什么__path__有用吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从不同位置导入包?

导入具有不同名称的软件包的类型

Python:导入具有相同名称的不同模块

如何发布具有相同程序包名称但版本代码和版本名称不同的apk

在具有purrr的大型列表中子集不同位置和名称的列

Java 从不同的项目导入一个类,但具有相同的包名

如何在不同位置的具有相同名称的节点中获取最后一个值?

我可以通过Ajax在不同位置访问具有相同名称的控制器吗?

osgi捆绑包可以从具有相同依赖项的不同版本中导入软件包吗?

具有相同名称空间的不同Composer软件包

我在不同的jar中有两个具有相同名称和相同包结构的类。是否可以从jar中专门选择一个类?

如何通过xpath获取具有相同父级和第n个不同位置的元素

不同的软件包如何具有相同的源代码?

tar软件包的完全相同的内容具有不同的校验和

使用roxygen2在R包中具有相同的功能但具有两个不同的名称吗?

找不到具有与包名称不同的applicationIds的风味的资源

如何在不导入每个类的情况下创建具有不同类的 python 包

不同包中的类名称相同

Python 3:导入具有相同名称的不同python模块

在不同位置具有不同部分的 React 组件

Android-Drawable在不同位置具有不同的颜色

从不同的包导入和重用现有的结构

在不同文件夹中找到具有相同包结构的python加载模块

Eclipse:具有相同名称但位置不同的多个项目

为什么 git 为具有不同名称和位置的文件分配相同的哈希?

如何使 textView 在具有不同屏幕比例的 imageView 背景上粘贴到相同位置

两个应用程序可以具有相同的捆绑包名称,但是具有不同的捆绑包标识符吗?

python如何处理具有相同名称的模块和包?

Spring Data:注入两个具有相同名称但两个不同包的存储库