【问题标题】:How to fix "no module named 'app_one'"如何修复“没有名为'app_one'的模块”
【发布时间】:2020-10-11 07:15:26
【问题描述】:

我有一个具有以下结构的 Python 包。

>python_package       # package root directory
    >app_one          # subpackage directory
        >__init__.py
        >views.py
   
    >app_two          # another subpackage directory
        >__init__.py
        >views.py

app_one/views.py 的代码:

def show(): 
    print('do something')

app_two/views.py 的代码:

from app_one.views import show
show()

问题是,每当我尝试从终端运行app_two 中的views.py 时,都会出现错误

没有名为“app_one”的模块

但是当我在 PyCharm IDE 中打开包 python_package 时,我没有遇到任何问题,一切正常。

【问题讨论】:

    标签: python python-3.x python-import


    【解决方案1】:

    出现此错误是因为app_one文件的路径不在当前路径中,您必须使用sys.path.append将其添加到路径中尝试:

    import sys
    sys.path.append('./app_one')
    from views import show
    show()
    

    【讨论】:

    • 但是当我使用像 pycharm 这样的 IDE 时,我没有收到任何错误。为什么??
    • 我相信 PyCharm 会自动处理路径,因此不需要人工干预
    【解决方案2】:

    我已经创建了与您相同的目录结构并试了一下,它正在工作。

    我认为您缺少的是在导入 app_two/views.py 之前添加此行:

    sys.path.insert(0, os.path.abspath(__file__ + "../../../"))
    

    请查看附有详细信息的图片

    【讨论】:

    • 发布文本时,请始终以文本形式发布,而不是作为文本图像发布。文本图像会给想要复制+粘贴的用户或使用屏幕阅读器的用户带来问题。搜索引擎机器人也无法应对。
    • @halfer,我不知道。非常感谢您的建议,下次我会记住的
    猜你喜欢
    • 2020-03-20
    • 1970-01-01
    • 2019-01-23
    • 2015-02-10
    • 2020-04-28
    • 2019-10-06
    • 2016-11-18
    • 2019-09-18
    • 2020-01-26
    相关资源
    最近更新 更多