python – 导入名称与祖父包相同的模块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 导入名称与祖父包相同的模块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1602字,纯文字阅读大概需要3分钟。
内容图文
![python – 导入名称与祖父包相同的模块](/upload/InfoBanner/zyjiaocheng/777/042414aa97544df68456844011e396b0.jpg)
在Python 2.6.6中,我有一个名为与祖父母相同的模块.我的项目结构(使用Flask的Web应用程序)看起来大致如下:
panel/
run.py
panel/
__init__.py
database.py
views/
__init__.py
root.py
dash.py
panel.py
users/
__init__.py
models.py
请注意,run.py旁边的包名称是panel.我还有一个名为panel.views.panel的模块.如果从panel / __ init__.py中导入panel.views.panel,则使用以下三种样式中的任何一种:
from panel.views import panel
from panel.views import panel as panel_view
import panel.views.panel as panel_view
导入panel.py后,我的其他任何导入都不起作用.例如,panel.users.models尝试导入database.py,并抛出此回溯:
Traceback (most recent call last):
File "run.py", line 5, in <module>
from panel import app
File "/opt/www/panel/panel/__init__.py", line 8, in <module>
from panel.views import root
File "/opt/www/panel/panel/views/root.py", line 9, in <module>
from panel import database;
ImportError: cannot import name database
我在#pocoo IRC频道中与一些人交谈过,根据他们的描述,问题是在views / root.py中,Python认为import panel.database意味着从坐在它旁边的panel.py导入数据库.
这对我来说没有意义,因为PEP 328概述(看起来像什么)这个确切的问题,并使绝对导入成为默认值以解决此问题.我使用的是Python 2.6.6,所以这应该是默认的.但是可以肯定的是,我在__future__ import absolute_import中添加了一行,但这并没有什么区别;发生导入database.py的错误相同.
重命名panel.py修复了这个问题,但是,我非常好奇地知道为什么这不起作用,特别是如果我能做任何事情来使这个工作.
解决方法:
你说你添加了__future__ import absolute_import中的行,但你没有说你添加了哪个文件.请务必将其添加到root.py.
python教程的这一部分解释了你的情况:http://docs.python.org/tutorial/modules.html#intra-package-references
内容总结
以上是互联网集市为您收集整理的python – 导入名称与祖父包相同的模块全部内容,希望文章能够帮你解决python – 导入名称与祖父包相同的模块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。