Flask迁移python2到3 ImportError:无法导入名称

时间:2017-07-06 09:49:02

标签: python flask migration compatibility

我有一个具有以下架构的烧瓶服务器

.
├── doc
│   ├── apidoc.json
│   ├── docAPI
│   └── generation_doc
├── images
│   ├── parking
│   └── user
├── log
│   └── file.log
├── README.md
├── requirements.txt
├── run_server.py
├── server
│   ├── controllers
│   ├── __init__.py
│   ├── models
│   ├── myServerUtils
│   ├── __pycache__
│   └── routes
└── venv
    ├── bin
    ├── include
    ├── lib
    └── pip-selfcheck.json

在python2下一切正常。但我必须迁移到python3。 在将python-mysql的需求更改为pymysql并重构导入的方式之后,这是我得到的错误。

/home/myUser/Documents/myServer/backend/venv/bin/python /home/myUser/Documents/myServer/backend/run_server.py
Traceback (most recent call last):
  File "/home/myUser/Documents/myServer/backend/run_server.py", line 4, in <module>
    from server import app
  File "/home/myUser/Documents/myServer/backend/server/__init__.py", line 26, in <module>
    from .controllers import *
  File "/home/myUser/Documents/myServer/backend/server/controllers/__init__.py", line 1, in <module>
    from .user import *
  File "/home/myUser/Documents/myServer/backend/server/controllers/user.py", line 3, in <module>
    from .. import UserTable
ImportError: cannot import name 'UserTable'

Process finished with exit code 1

文件controllers/user.py中的导入是

from .. import db
from .. import return_error
from .. import UserTable
from .. import ErrorType
from .. import Logger
from .. import ParkingTable
from .. import ParkingBookedTable
from .. import reset_password as mail_reset_password
from .. import app
from flask import request, jsonify, send_file
import exrex, hashlib
from validate_email import validate_email
from datetime import datetime
import uuid
import os
import time

以下是models/users.py的导入,其中UserTable已定义

from .. import db
from .. import ErrorType
from validate_email import validate_email
import uuid
import time

先谢谢!

[编辑]:要添加关于dmitrybelyakov答案的补充信息,问题来自我的IDE,它优化了导入并搞砸了其中一些。 回滚我的git并正确设置我的导入就可以了。

1 个答案:

答案 0 :(得分:0)

我没有确定的答案,但我会先检查是否有任何循环导入。