Python 如何从包中的同级模块导入,不允许更改模块文件?
下面给出了一个文件夹结构。文件a.py和b.py已生成且无法更改。文件b.py导入文件a.py。初始化文件为空,可以更改。使用my_程序包在b.py中获取错误: ModuleNotFoundError:没有名为“a”的模块 如何解决这个问题 __init_uuuuuuuuy.py: a、 py: b、 py: 测试:Python 如何从包中的同级模块导入,不允许更改模块文件?,python,Python,下面给出了一个文件夹结构。文件a.py和b.py已生成且无法更改。文件b.py导入文件a.py。初始化文件为空,可以更改。使用my_程序包在b.py中获取错误: ModuleNotFoundError:没有名为“a”的模块 如何解决这个问题 __init_uuuuuuuuy.py: a、 py: b、 py: 测试: 德里克·伊登的回答对我有用。想用我使用的包init文件内容扩展它 my package\uuuuu init\uuuuuuuuuuy.py文件: 您正在尝试从导入。目录?a和b是由
德里克·伊登的回答对我有用。想用我使用的包init文件内容扩展它 my package\uuuuu init\uuuuuuuuuuy.py文件:
您正在尝试从导入。目录?a和b是由外部工具生成的,在b中:导入a作为mega_Ay您的b.py文件有缺陷,因此您应该更改生成它的工具。或者将.py放在顶层,可能是在src中,而不是在您的包中,因为它不属于那里。@Blckknght文件是由gRPC生成的,它们代表微服务的访问接口,从我的观点来看,它们属于同一个包。那么,您的工具是否有配置它的方法呢?或者您可以编写一些自动化脚本来修改文件中的导入语句。但是如果你想让a生活在一个包中,那么导入a就是错误的。你也许可以让它与一些丑陋的黑客,但它将是混乱的,不值得它。在我看来,德里克只是说明了a从b的进口,我认为已经发生-无需更改?你应该试试他建议的__; init __; py.py更改,因为它们对我来说是个不错的选择。。试图从较高的层次说明a和b中已经发生的事情。只需修改init即可获得所需的行为。仅供参考-他的评论来自以前的版本,我编辑:
.
└── src
├── main.py
└── my_package
├── a.py
├── b.py
└── __init__.py
import sys
sys.path.extend(pkg_directory)
import a
import b
def hello():
print('Hello')
import a
>>> import pkg
>>> pkg.a.hello()
Hello
>>> pkg.b.a.hello()
Hello
import sys
import os.path
this_pkg_path = os.path.dirname(__file__)
sys.path.append(this_pkg_path)
import a
import b