J'ai un serveur de flacon avec l'architecture suivanteFlask migration python2 à 3 ImportError: ne peut pas importer le nom
.
├── 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
Tout fonctionne bien sous python2. Mais je dois migrer vers python3. Après avoir changé les exigences de python-mysql en pymysql et refactoring comment les importations sont faites, voici l'erreur que je reçois.
/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
Les importations dans le fichier controllers/user.py
sont
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
et voici les importations en provenance models/users.py
où UserTable
est
from .. import db
from .. import ErrorType
from validate_email import validate_email
import uuid
import time
Merci par avance! [EDIT]: Pour ajouter un complément d'informations concernant la réponse de dmitrybelyakov, le problème provenait de mon IDE qui avait optimisé les importations et en a gâché certaines. En revenant sur mon git et en réglant mes importations correctement fait le travail.
Je ne vois aucune importation du contenu de 'controllers/user.py' dans le fichier' models/users.py'. Y a-t-il un autre endroit à rechercher? Et comment cela peut-il fonctionner dans python2 et ne pas fonctionner dans python3 s'il y a une importation circulaire? – RoToR