Python 从_uinit__uu.py导入方法
在python中导入模块时遇到一些问题。这是我的文件夹结构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
我的应用程序/
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
等,则使用该解决方案将使数据无法读取)。