У меня проблема при импорте функции из файла, и именно в этом файле я получаю ошибку, если я импортирую ту же функцию в другие файлы, она работает, потому что я уже использую ее в других файлах.
--dev_ma
-__init__.py
-roles.py
-user.py
-audit.py
-active_directory.py
Проблема в том, что я на audit.py
, если я делаю: from dev_maintenance.roles import check_if_user_has_permissions
Я получаю ошибку:
Traceback (most recent call last):
File "/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/__init__.py", line 21, in <module>
import dev_maintenance.active_directory
File "/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/active_directory.py", line 6, in <module>
from dev_maintenance.audit import audit_action
File "/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/audit.py", line 5, in <module>
from dev_maintenance.roles import check_if_user_has_permissions
File "/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/roles.py", line 6, in <module>
from dev_maintenance.audit import audit_action
ImportError: cannot import name 'audit_action' from 'dev_maintenance.audit' (/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/audit.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/pjose/Project/venv/lib/python3.7/site-packages/flask/cli.py", line 325, in __call__
self._flush_bg_loading_exception()
File "/Users/pjose/Project/venv/lib/python3.7/site-packages/flask/cli.py", line 313, in _flush_bg_loading_exception
reraise(*exc_info)
File "/Users/pjose/Project/venv/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/Users/pjose/Project/venv/lib/python3.7/site-packages/flask/cli.py", line 302, in _load_app
self._load_unlocked()
File "/Users/pjose/Project/venv/lib/python3.7/site-packages/flask/cli.py", line 317, in _load_unlocked
self._app = rv = self.loader()
File "/Users/pjose/Project/venv/lib/python3.7/site-packages/flask/cli.py", line 372, in load_app
app = locate_app(self, import_name, name)
File "/Users/pjose/Project/venv/lib/python3.7/site-packages/flask/cli.py", line 242, in locate_app
'\n\n{tb}'.format(name=module_name, tb=traceback.format_exc())
flask.cli.NoAppException: While importing "dev_maintenance", an ImportError was raised:
Traceback (most recent call last):
File "/Users/pjose/Project/venv/lib/python3.7/site-packages/flask/cli.py", line 235, in locate_app
__import__(module_name)
File "/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/__init__.py", line 21, in <module>
import dev_maintenance.active_directory
File "/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/active_directory.py", line 6, in <module>
from dev_maintenance.audit import audit_action
File "/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/audit.py", line 5, in <module>
from dev_maintenance.roles import check_if_user_has_permissions
File "/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/roles.py", line 6, in <module>
from dev_maintenance.audit import audit_action
ImportError: cannot import name 'audit_action' from 'dev_maintenance.audit' (/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/audit.py)
Это мой файл инициализации:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS
from flasgger import Swagger
from flask_caching import Cache
app = Flask(__name__)
app.debug = True
app.config.from_object('dev_maintenance.yaml_config_loader')
cache = Cache(app)
db = SQLAlchemy(app)
cors = CORS(app, resources={r"/*": {"origins": "*"}})
swagger = Swagger(app)
import dev_maintenance.mesos_callback
import dev_maintenance.db_model
import dev_maintenance.active_directory
import dev_maintenance.user_list
import dev_maintenance.audit
import dev_maintenance.machines
import dev_maintenance.yaml_config_loader
import dev_maintenance.roles
import dev_maintenance.user_details
if __name__ == '__main__':
app.run(debug=True)
Это мой файл аудита:
from dev_maintenance import app, db
import json
from flask_jwt_extended import jwt_required
from dev_maintenance.db_model import ActionLog
from dev_maintenance.roles import check_if_user_has_permissions
def audit_action(user, action_type, action_parameters):
req = ActionLog(
user=user,
action_type=action_type,
action_parameters=action_parameters
)
db.session.add(req)
db.session.commit()
@app.route("/api/audit", methods=["GET"])
@jwt_required
def get_audit_log():
data = []
for run in db.session.query(ActionLog).order_by(ActionLog.date.desc()).limit(100):
run_tmp = {}
run_tmp["date"] = str(run.date)
run_tmp["user"] = run.user
run_tmp["action_type"] = run.action_type
run_tmp["action_parameters"] = run.action_parameters
data.append(run_tmp)
response = app.response_class(
response=json.dumps(data), status=200, mimetype="application/json"
)
return response
Я не могу понять, почему это происходит, и дело не только в этой функции, другие функции из других файлов также вызывают ошибку в audit.py .