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

python中的相对导入与本地ang全局库

python中的相对导入与本地ang全局库

Helenr 2022-01-11 17:59:51
我的应用程序是这样组织的:apps/    code/        libglobal/            funglobal.py    tests/        project/            liblocal/                funlocal.py            main.py在main.py我有:import liblocal.funlocal在funlocal.py我尝试导入funglobal.py:from ....code.libglobal import funglobal当我跑python3 -B tests/project/main.py我收到一个错误:from ....code.libglobal import funglobalValueError: attempted relative import beyond top-level package我已经阅读了很多关于python3相对导入的信息,但仍然没有找到如何在不彻底改变应用程序组织的情况下解决这个错误。有什么解决办法吗?
查看完整描述

2 回答

?
慕哥9229398

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

由于正在执行的脚本将其__name__设置为__main__并将自己定义为位于包的顶层,因此它拒绝识别同级目录中的脚本。


您可以通过sys.pathhack解决此问题:


import sys, os

sys.path.insert(0, os.path.abspath('../..'))

或此答案中提供了与 setuptools 的有趣替代方案。


查看完整回答
反对 回复 2022-01-11
?
互换的青春

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

你有一个__init__.py每个文件夹中的脚本?

如果不是,您应该__init__.py在每个文件夹中创建一个名为的空脚本。


查看完整回答
反对 回复 2022-01-11
  • 2 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号