有没有办法动态更改子模块名称

2024-06-16 14:09:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一堆代码生成的文件:

parent/
  a.py
  b.py
  <...>
  aa.py

它们相互导入,假设它们是它们所在包的根

例如a.py

import b as b__

我想将整个parent子目录包含到另一个项目中,以便生成的树如下所示

project/
  main.py
  parent/
    a.py
    b.py
    <...>

但是,上述树中父级中的所有内容都会出现相互导入的问题。除了进入a.pyb.py,…,并将所有绝对导入转换为相对导入之外,还有其他方法解决这个问题吗?e、 g.执行以下100次:

import .b as b__

Tags: 文件项目方法pyimportproject内容main
1条回答
网友
1楼 · 发布于 2024-06-16 14:09:32

好的,您可以通过在其他任何事情发生之前运行import sys; sys.path.append('path/to/project/parent')作为第一行代码来操作导入机制。或者类似地,set the ^{} environment variable

但是这种黑客虽然现在就可以解决你的问题,但在不久的将来会使事情变得更难解决。例如,您的IDE不会意识到这一点,并且会不断警告您的文件不可导入,并且在运行应用程序、测试套件、包生成器或文档生成器时,可能很难断言路径设置正确

这就是为什么,正如您在评论中所指出的,最好将parent转换为适当的包,并将子模块路径更新为import .b as b__或导入from parent import b as b__

相关问题 更多 >