python - 如何导入兄弟姐妹以便 python 可以同时运行文件和下行脚本?
问题描述
import
在以下情况下,我不确定如何整理我的陈述:
main.py
folder/
__init__.py
a.py
b.py
a.py
:
class Base(object):
pass
b.py
:
from a import Base # If I do this, `python main.py` fails with "ModuleNotFoundError: No module named 'a'"
from .a import Base # But if I do this, `python b.py` or `python folder/b.py` fails with "ModuleNotFoundError: No module named '__main__.a'; '__main__' is not a package"
class Kid(Base):
pass
if __name__ == "__main__":
# Toy around with Kid (informal test, debug, snippets, etc.)
k = Kid()
main.py
:
from folder.b import Kid
# Main script with Kid.
k = Kid()
我有时想运行main.py
,因为它是我的主程序。
但有时我想运行它,因为它更简单,并且它包含小片段和示例,可以在文件打开时 b.py
与我的类一起玩。Kid
我认为两者都想要是合法的,否则共同的构造就没有意义了if __name__ == '__main__':
。
什么是正确的进口b.py
?有没有一种巧妙的方法可以让我享受这两种选择的最佳效果?
解决方案
Python 导入可能会变得很荒谬,并且想要以多种方式使用模块会变得很棘手。最简单的方法就是尝试/抓住它
try:
from a import Base
except ModuleNotFoundError:
from .a import Base
推荐阅读
- c# - powershell中的多线程问题
- omnet++ - Sumo0.32.0 + Venes4.7.1:如何在ini文件中模拟多个具体事故
- powershell - 如何获取数组对象的成员列表?
- hive - Apache Nifi 1.7.1 PutHive3Streaming Hive 3.0 - 托管表压缩
- javascript - 如何修改EE代码,详细控制博客链接转换偏好?
- swift - 从抛出函数到非抛出函数的无效转换
- mysql - 这两种类型的查询写作有什么区别?
- mysql - 如何在“限制”中将字符串参数转换为 int
- javascript - 删除删除行点击反应
- javascript - 将整数数组映射到整数数组