Импорт класса из другого каталога в маршруты / представления Flask App - PullRequest
1 голос
/ 09 мая 2019

У меня есть приложение фляги, я использовал нижеприведенный файл для импорта модуля, который я написал, в файл forms.py, и он, кажется, работает.

sys.path.append('/home/user/lib/')
from mymodule import *

Однако, когда я пытаюсь импортировать его в мой файл rout.py, он не работает. Когда я перезагружаю свой сервер Apache WSGI, он не загружается, к сожалению, я не получаю никаких журналов, объясняющих почему-то.

Ниже приведен макет моего приложения.

flaskapp
├── config.py
├── forms.py
├── flaskapp.wsgi
├── __init__.py
├── routes.py
├── static
│   ├── search.js
│   └── sort.js
└── templates
    ├── base.html
    ├── certs_view.html
    ├── results.html
    ├── index.html
    ├── new_org.html
    ├── submit_csr.html
    └── upload.html

Я попытался добавить и вставить методы, чтобы попытаться импортировать модуль без какого-либо успеха. Я даже создал символическую ссылку, чтобы попробовать это таким образом, но сервер WSGI не будет загружаться, как только я попытаюсь импортировать его в route.py.

1012 * INIT * .py

from flask import Flask
app = Flask(__name__)
import flaskapp.routes
import flaskapp.config
import flaskapp.forms
from flask_bootstrap import Bootstrap
from flaskapp.forms import RequestCSRForm
from flaskapp.forms import SubmitForm
from flaskapp.forms import UploadCertificate
from flaskapp.forms import CreateNewOrg
#from mymodule import *
bootstrap = Bootstrap(app)
app.config['SECRET_KEY'] = ''
app.config.from_object(config)
...

config.py

import os
from flaskapp import app
...

! Это работает! forms.py

import sys, json
from flaskapp import app
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, SubmitField, TextAreaField, SelectField
from wtforms.validators import DataRequired
sys.path.append('/home/user/lib/')
from mymodule import *
...

! Этот не работает! routes.py

import os, datetime, json, time, OpenSSL.crypto
from flaskapp import app
from flask import render_template, Flask, redirect, url_for, flash
from flask_bootstrap import Bootstrap
from flaskapp.forms import RequestCSRForm
from flaskapp.forms import SubmitForm
from flaskapp.forms import UploadCertificate
from flaskapp.forms import CreateNewOrg
from OpenSSL.crypto import load_certificate_request, FILETYPE_PEM
sys.path.append('/home/user/lib')
from mymodule import *
...

Я хочу, чтобы можно было вызывать функции из моего модуля из router.py или идеально использовать все из них ...

1 Ответ

0 голосов
/ 11 мая 2019

Почему бы не создать настройку для вашего модуля, тогда pip install mymodule в venv вашего flaskapp?

https://packaging.python.org/tutorials/packaging-projects/

...