【问题标题】:Flask migration python2 to 3 ImportError: cannot import name烧瓶迁移python2到3 ImportError:无法导入名称
【发布时间】:2017-07-06 09:49:02
【问题描述】:

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

.
├── 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 并正确设置我的导入完成了这项工作。

【问题讨论】:

    标签: python flask migration compatibility


    【解决方案1】:

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

    【讨论】:

    • 我在文件models/users.py 中看不到任何controllers/user.py 内容的导入。还有其他地方可以搜索吗?如果有循环导入,它怎么可能在 python2 中工作而在 python3 中不起作用?
    猜你喜欢
    • 2018-09-16
    • 2018-12-31
    • 1970-01-01
    • 2020-12-06
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    相关资源
    最近更新 更多