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

Python 包导入错误

Python 包导入错误

一只甜甜圈 2019-04-07 09:38:32
比如说test|--a.py|--b.py`--__init__.pya.pyfromtest.bimportcprint(c)b.pyc="test"运行a.pypython3a.py出错Traceback(mostrecentcalllast):File"a.py",line1,infromtest.bimportcImportError:Nomodulenamed'test.b'我是看官方文档的:https://docspy3zh.readthedocs.org/en/latest/tutorial/modules.html#tut-packages为什么test没有被当成一个包呢?脚本所在的文件夹应该在搜索路径里面的呀。虽然直接import也行,但是用包组织似乎更推荐?如果说因为是包内平级的模块不行,但是文档里面说可以用语句来导入的:https://docspy3zh.readthedocs.org/en/latest/tutorial/modules.html#id18然而将a.py改成:from.importbprint(b.c)依然报错。Traceback(mostrecentcalllast):File"a.py",line1,infrom.importbSystemError:Parentmodule''notloaded,cannotperformrelativeimport将a.py改写成importsysprint(sys.path)输出:['/home/tioover/.proj/test','/usr/lib/python3.3/site-packages/Pectin-0.9-py3.3.egg','/usr/lib/python33.zip','/usr/lib/python3.3','/usr/lib/python3.3/plat-linux','/usr/lib/python3.3/lib-dynload','/usr/lib/python3.3/site-packages','/usr/lib/python3.3/site-packages/setuptools-0.6c11.egg-info']
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

你的test的上级目录不在sys.path中。
还有,不要直接执行一个包里边的文件。如果真需要执行一个包里的模块(而又不使用distribute提供的entrypoint安装配置),请使用python3-mtest.a这样子。
                            
查看完整回答
反对 回复 2019-04-07
?
哆啦的时光机

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

因为a.py在test包内,你只要frombimportc就行了。
作者用的python3,与2不同,参考楼上的答案吧。
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 593 浏览
慕课专栏
更多

添加回答

举报

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