python-2.7 - 从python中同一包中的文件夹导入
问题描述
我在views.py中使用金字塔
from pyramid.response import Response
from pyramid.view import view_config
import os
import uuid
import shutil
import hashlib
from .service.fun import *
def forservo():
return "HAppy HERE"
@view_config(route_name='home',request_method='GET')
def home(request):
return Response('html')
在 fun.py 中
from ..views import *
print forservo()
它抛出错误说名称'forservo'未定义
文件夹结构是
myapp
myapp
service
__init__.py
fun.py
__init__.py
views.py
解决方案
您有一个循环导入-fun.py
从导入views.py
和views.py
从 导入fun.py
。
在这种情况下,事情大致是这样发生的:
Python 打开
views.py
并执行到该行from .service.fun import *
然后它必须停止执行
views.py
并打开fun.py
。第一行
fun.py
告诉它停止并导入views.py
import 语句返回尚未
forservo
定义函数的部分执行模块。
循环导入可以通过将 fun.py 和 views.py 所需的公共代码位移动到单独的模块中来解决。一个不太优雅的解决方案是将一些导入移动到导致循环导入错误的函数下方,或者将它们本地化到需要导入的函数中。
推荐阅读
- admin - 如何在没有 nmap 每次都询问管理员权限的情况下运行 nmap 脚本?
- ruby-on-rails - 独角兽生产配置
- java - 使用子对象数组时如何调用抽象类的子类方法?
- javascript - javascript 函数返回 -1 似乎总是无法访问
- c++ - QRect 上的 Qt 正则表达式
- c# - 如何使用范围打印出反向数组?
- javascript - 从反应中的出生日期用户输入值计算年龄
- c# - 无法加载文件或程序集'e_sqlite3
- android - 如何在scrollView中添加webview滚动
- .net - 无法在自定义端口上打开 dockerized .net core api