python - 从 __init__.py 导入方法

标签 python python-module

在 python 中导入模块时遇到一些问题。这是我的文件夹结构

my_app/
    app.py
    __init__.py (I want to import a function from this file)
    folder1/
        __init.py
        method1.py
    folder2/
        __init__.py
        method.py

在我的根 __init__.py 我有这个功能

def want_to_be_run_elsewhere():
    pass

在我的 app.py 中,我想导入这个函数并在我启动我的应用程序时运行它,但我不确定该怎么做。

from my_app import want_to_be_run_elsewhere

这会抛出一个名为 my_app 的 no 模块

据我所知,我拥有所有必需的 __init__.py 文件,所以它可能与 sys.path 相关吗?

我在这里阅读了一些类似的主题,但我无法解决这个问题。

最佳答案

通常你会像这样导入

from . import want_to_be_run_elsewhere

这在这里不起作用,因为您正在调用 app.py。如果您导入 my_app.app,它就是模块的一部分。如果你调用它,它就不是。从使用 . 的模块导入将不起作用。

您可以将 app.py 移到 my_app 之外,将其从模块中移除并再次导入。

或者你可以使用

from __init__ import want_to_be_run_elsewhere

app.py

我相信

from my_app import want_to_be_run_elsewhere

只有当您实际安装了 pip install -e my_app/ 时才会起作用。那么它也应该起作用。

关于python - 从 __init__.py 导入方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40327801/

相关文章:

python - 如何替换字符串中的第一个字母

python - 阻止显示表单字段

python - 在 Dash App 中调用本地 CSS 文件

python - 在 3.3 中加载 python 模块时,我用什么代替 PyString_AsString

pip - 如何组织我的 python 模块和包

python - 聚合多组列

python - Python 模块中的 __name__ 变量是如何定义的?

python - 分配模块函数返回

python - 从Python模块导入隐藏函数

python - 为尝试安装 OpenCV 的 Mac 编辑 bash_profile 后 Python 路径不正确