【问题标题】:ImportError trying to import __init__.py from root of packageImportError 试图从包的根目录导入 __init__.py
【发布时间】:2015-04-05 17:59:15
【问题描述】:

我的项目结构是这样的一个包,

cred/
    LICENSE
    setup.py
    cred/
        __init__.py
        runserver.py
        resources/
            __init__.py
            event.py

在我的cred/cred/__init__.py 中,我有一些代码可以创建各种变量,在整个包中使用(如appapidb)。

我可以使用 from cred import app, api, dbresources 文件夹中的 python 文件中成功导入这些文件,但由于某种原因,我得到了,

$ python cred/runserver.py
Traceback (most recent call last):
  File "cred/runserver.py", line 1, in <module>
    from cred import app, api, db, initDB
ImportError: No module named 'cred'

当在runserver.py 中做from cred import app, api, db 时。

我不知道如何修复它,所以任何帮助将不胜感激:/...

更新

我不知道发生了什么变化,但是当我重新开始该项目时,它按预期运行。我怀疑我的环境中的一些缓存或其他东西弄乱了它:/...感谢@rfkortekaas 给他时间尝试回答!

【问题讨论】:

    标签: python import python-import


    【解决方案1】:

    您需要将子文件夹提供给导入,因为资源不在 python 路径上。

    from cred.resources import app
    

    【讨论】:

    • 当它是 cred 中的 __init__.py 文件而不是 cred/resources 中的文件时?
    • 您在 cred.resources init 中有一个变量。如果你想在 cred.runserver 中使用它,你需要从上面的 runserver.py 中导入
    • 也许我有点不清楚,变量被设置在cred/cred/__init__.pynotcred/cred/resources/__init__.py
    • 信任在python路径上吗?如果不是,它无法找到包信用。您可以通过使用相对导入来解决此问题:“from .import app”或将其添加到 python 路径
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2017-07-25
    • 2013-07-29
    • 2021-09-13
    • 2014-08-04
    • 2023-03-22
    相关资源
    最近更新 更多