gpt4 book ai didi

python - (又一个) 'ImportError: No module named my_module'

转载 作者:行者123 更新时间:2023-12-04 08:54:25 25 4
gpt4 key购买 nike

好的,我将代码剥离到极少以说明问题并使其可重现
语境 :

  • Python 3.7
  • 没有 VENV 或有趣的东西

  • 说话便宜。给你看代码:
    代码结构:
    $ tree pymod/
    pymod/
    ├── modone
    │   ├── __init__.py
    │   └── one.py
    └── modtwo
    ├── __init__.py
    └── two.py
    初始化.py 显然无处不在
    一个.py:
    from modtwo import two
    class One():
    @staticmethod
    def print_one():
    print("this is one")
    two.print_two()

    if __name__ == "__main__":
    One().print_one()
    二.py:
    class Two():
    @staticmethod
    def print_two():
    print("this is from two")
    抛出错误
    $ python modone/one.py

    Traceback (most recent call last):
    File "modone/one.py", line 1, in <module>
    from modtwo import two
    ImportError: No module named modtwo
    到目前为止我尝试了什么:
  • 将所有可能的目录附加到 PYTHONPATH
  • 从项目根目录和相对路径运行命令
  • 强制性地挠了挠头

  • 回答后编辑:
    到目前为止我学到了什么:
  • 模块和脚本是两个不同的概念。
    它们就像光波/粒子二元性
    因此它们应该被这样调用/处理(作为模块或脚本)
  • 一个模块可以作为脚本运行,但它不会知道它周围的目录结构
  • 最佳答案

    问题是你如何调用 print_two 方法。
    你叫了两个,这是一个模块,这就是你得到“模块不可调用”的原因

    from modtwo import two
    class One():
    @staticmethod
    def print_one():
    print("this is one")
    two().print_two()
    您应该首先访问该类(class)
    from modtwo import two
    class One():
    @staticmethod
    def print_one():
    print("this is one")
    two.Two.print_two()
    并像这样运行脚本
    python -m modone.one
    结果是:
    this is one
    this is from two

    关于python - (又一个) 'ImportError: No module named my_module',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63918893/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com