Python 从_uinit__uu.py导入方法

Python 从_uinit__uu.py导入方法,python,python-module,Python,Python Module,在python中导入模块时遇到一些问题。这是我的文件夹结构 我的应用程序/ app.py __init__u;.py(我想从这个文件导入一个函数) 折叠1/ __init.py 方法1.py 折叠2/ __初始值 方法.py 在我的根目录中,我有这个函数 def want_to_be_run_elsewhere(): pass 在我的app.py中,我想导入此函数并在启动应用程序时运行它,但我不确定如何操作 from my_app import want_to_be_run_else

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

我的应用程序/
app.py
__init__u;.py(我想从这个文件导入一个函数)
折叠1/
__init.py
方法1.py
折叠2/
__初始值
方法.py
在我的根目录中,我有这个函数

def want_to_be_run_elsewhere():
    pass
在我的app.py中,我想导入此函数并在启动应用程序时运行它,但我不确定如何操作

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

据我所知,我有所有必要的
\uuuu init\uuuu.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-e my\u app/
的情况下,才能使用。那么它也应该可以工作。

app.py
还是
\uuuu init\uuuu.py
my\u app/
里面?很抱歉这么草率。是的
app.py
\uuuu init\uuuuu.py
在我的\u app/中,
app.py
是我的入口点fwiw,通常不在
\uuu init\uuuuuuu.py
文件中定义函数。它们通常是空的,或者只是有一个
\uuuuuuuuuuuuuuuuuuu
列表。嗯,好的。也许我应该考虑一下移动这个函数。我不想导入“\uuu init\uuuu”`但是如果这是唯一的方法,我想我会用另一种方法实现它。谢谢最简单的方法就是用tab键在ipython中导入它,这是我一直比较喜欢的方法。例如:导入某物。或者,作为包中的一个模块调用
app.py
:从上面的目录
my\u app
,调用
python-m my\u app.app
python3-m my\u app.app
。看有趣的!将不得不尝试此操作。我将从uu init_uuu导入…中删除使用
的建议。这不是正确的做事方式。如果子模块中的某些代码依赖于包名,它甚至可能会中断代码(例如,如果您直接使用模块,如
pickle
,或
shleve
等,则使用该解决方案将使数据无法读取)。