为了账号安全,请及时绑定邮箱和手机立即绑定

从兄弟目录导入文件

从兄弟目录导入文件

婷婷同学_ 2021-11-02 19:58:46
我需要为我的 Flask 应用程序运行单元测试。在我的测试配置文件中,我需要create_app从同级目录中导入flask函数来初始化测试应用程序。如果没有导入错误,我无法弄清楚。我试过把__init__.py几乎每个文件夹都放上,但没有成功。我已经读过不建议编辑 sys 路径,所以我想要一个没有的解决方案。文件夹结构root/----__init__.py----server/--------__init__.py--------database.py----tests/--------__init__.py--------config.py配置文件from server import create_appfrom server.database import db引发此错误:Traceback (most recent call last):  File "tests/config.py", line 2, in <module>    from server import create_appModuleNotFoundError: No module named 'server'和:from ..server import create_appfrom ..server.database import db引发此错误:Traceback (most recent call last):  File "tests/config.py", line 2, in <module>    from ..server import create_appValueError: attempted relative import beyond top-level package有人可以解释为什么它不起作用以及 pythonimport通常是如何工作的吗?我一直无法弄清楚它们。
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

为了使导入语句正常工作,必须以sys.path某种方式解析名称。创建正确的包结构并安装包通常是让名称在sys.path.

  1. 删除root/__init__.pytests/__init__.py

  2. 更正您的导入语句:

from ..server import create_app  # nofrom server import create_app  # yes
  1. 添加root/setup.py内容,如setuptools basic guide 中所述

  2. 创建/激活 virtualenv(通常在root/.venv/子目录中,但在何处并不重要)

  3. 从项目根目录,即包含 的目录setup.py,安装您的包:

pip install --editable .


查看完整回答
反对 回复 2021-11-02
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信