在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
的无模块据我所知,我拥有所有必需的__init__.py
文件,所以也许它可能与sys.path相关?
我已经在这里阅读了一些类似的主题,但我还没能解决这个问题。
答案 0 :(得分:2)
通常你会像
那样进行导入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/
时才有效。那它也应该有效。