J'espère que vous pourrez m'aider à résoudre les erreurs que j'obtiens avec Flask lorsque je tente de déployer plotly-dash sur un serveur Windows.
J'ai configuré Flask en suivant le guide suivant, mot pour mot, à l'exception de l'emplacement de mon site web dans le dossier wwwroot : Flask sur IIS
Lorsque j'utilise les applications les plus basiques, cela fonctionne bien, par exemple avec le code suivant :
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello from FastCGI via IIS!"
if __name__ == "__main__":
app.run()
Mais ensuite, si j'essaie quelque chose de légèrement plus complexe, comme la démo de base de Dash :
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''
Dash: A web application framework for Python.
'''),
dcc.Graph(
id='example-graph',
figure={
'data': [
{'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
{'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
],
'layout': {
'title': 'Dash Data Visualization'
}
}
)
])
if __name__ == '__main__':
app.run_server(debug=True)
J'obtiens l'erreur suivante (que j'ai essayé de mettre en forme pour faciliter l'interprétation) :
Error occurred while reading WSGI handler:
Traceback (most recent call last):
File "C:\inetpub\wwwroot\wfastcgi.py", line 791, in main env, handler = read_wsgi_handler(response.physical_path)
File "C:\inetpub\wwwroot\wfastcgi.py", line 633, in read_wsgi_handler handler = get_wsgi_handler(os.getenv("WSGI_HANDLER"))
File "C:\inetpub\wwwroot\wfastcgi.py", line 600, in get_wsgi_handler handler = __import__(module_name, fromlist=[name_list[0][0]])
File ".\app.py", line 1, in import dash
File "C:\Python36\lib\site-packages\dash\__init__.py", line 1, in from .dash import Dash # noqa: F401
File "C:\Python36\lib\site-packages\dash\dash.py", line 12, in import plotly
File "C:\Python36\lib\site-packages\plotly\__init__.py", line 31, in from plotly import (plotly, dashboard_objs, graph_objs, grid_objs, tools,
File "C:\Python36\lib\site-packages\plotly\plotly\__init__.py", line 10, in from . plotly import (
File "C:\Python36\lib\site-packages\plotly\plotly\plotly.py", line 30, in from plotly import exceptions, files, session, tools, utils
File "C:\Python36\lib\site-packages\plotly\tools.py", line 59, in ipython_core_display = optional_imports.get_module('IPython.core.display')
File "C:\Python36\lib\site-packages\plotly\optional_imports.py", line 23, in get_module return import_module(name)
File "C:\Python36\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level)
File "C:\Python36\lib\site-packages\IPython\__init__.py", line 55, in from .terminal.embed import embed
File "C:\Python36\lib\site-packages\IPython\terminal\embed.py", line 15, in from IPython.core.interactiveshell import DummyMod, InteractiveShell
File "C:\Python36\lib\site-packages\IPython\core\interactiveshell.py", line 61, in from IPython.utils import io
File "C:\Python36\lib\site-packages\IPython\utils\io.py", line 95, in stdin = IOStream(sys.stdin, fallback=devnull)
File "C:\Python36\lib\site-packages\IPython\utils\io.py", line 39, in __init__ for meth in filter(clone, dir(stream)):
File "C:\Python36\lib\site-packages\IPython\utils\io.py", line 38, in clone return not hasattr(self, meth) and not meth.startswith('_')
File "C:\Python36\lib\site-packages\IPython\utils\io.py", line 82, in closed return self.stream.closed
ValueError: underlying buffer has been detached StdOut: StdErr:
J'ai fait une tonne de recherches sur Internet et j'ai fait de mon mieux pour décoder cette erreur, mais je me heurte à un mur de briques. Quelqu'un a-t-il une idée ?
Suite à la suggestion de @susodapop, j'ai supprimé IPython et j'ai maintenant l'erreur suivante :
Error occurred: Traceback (most recent call last): File "C:\inetpub\wwwroot\wfastcgi.py", line 847, in main result = handler(record.params, response.start)
TypeError: 'Dash' object is not callable StdOut: StdErr: C:\Python34\lib\site-packages\plotly\tools.py:103: UserWarning: Looks like you don't have 'read-write' permission to your 'home' ('~') directory or to our '~/.plotly' directory.
That means plotly's python api can't setup local configuration files. No problem though! You'll just have to sign-in using 'plotly.plotly.sign_in()'. For help with that: 'help(plotly.plotly.sign_in)'. Questions? Visit https://support.plot.ly