在交互式Python开发中,如何从另一个文件导入?

在交互式Python开发中,如何从另一个文件导入?,python,Python,假设我有以下目录结构: app |-- A.py |-- B.py `-- __init__.py B.py的内容是: from . import A def func(): return 2 * A.bar() 如果我使用iPython以交互方式开发应用程序,我如何执行B.py的内容?从运行行时。导入一个,python将返回一个ImportError 编辑:理想情况下,我不想弄乱sys.pathsys.path是基于会话的。顺便说一句,当你关闭程序时,你添加的任何内容都会被忘记

假设我有以下目录结构:

app
|-- A.py
|-- B.py
`-- __init__.py
B.py的内容是:

from . import A


def func():
    return 2 * A.bar()
如果我使用iPython以交互方式开发应用程序,我如何执行B.py的内容?从运行行
时。导入一个
,python将返回一个
ImportError


编辑:理想情况下,我不想弄乱sys.path

sys.path
是基于会话的。顺便说一句,当你关闭程序时,你添加的任何内容都会被忘记,所以它非常安全。然后,我总是要绕过sys.path,从dir import a运行一个单独的
,然后从中跳过
。将B.py的内容发送到REPL时导入A
?似乎是我的工作流程中断了(很可能),或者是在交互开发多文件项目时出现了一个非常糟糕的可用性问题。我从来都不太了解
是如何产生的。导入*
语法在tbf中起作用。当我从上面的文件夹中调用了多个文件并启用了
absolute\u import
时,它工作得很好,但主要的缺点是在这样编码之后,我无法运行文件本身。执行B.py的内容是什么意思?有两种方法:
如果要导入
B
,请从应用程序导入B
!python-m app.B
如果您想将其作为程序运行。在这两种情况下都不应该有导入错误或python路径设置错误。@BlackJack,您的意思是我不应该从中获取文件
。导入一个
?我使用带有拆分屏幕的Emacs进行开发,右边是python文件,左边是REPL。如果我通过向REPL发送块来运行文件,那么任何包含相对导入的行都将失败。我只是想学习如何使用repl进行交互开发,而不必面对相关的导入问题<应用程序导入B中的代码>表示安装了
app
。是不是我总是要先“安装”一些东西,然后才能开发它们?