2016-10-17 1 views
1

J'ai mis en place un virtualenv pour exécuter un serveur flask. J'ai suivi les étapes pour mettre en place wfastcgi pour travailler avec iis. Il semble fonctionner, car je suis capable d'accéder à l'application python, mais une pile d'erreurs python est imprimée.Flask App sur IIS avec wfastcgi virtualenv - Package non trouvé

Une erreur est survenue lors de la lecture gestionnaire WSGI:

Traceback (most recent call last): 
File "c:\python27\lib\site-packages\wfastcgi.py", line 793, in main 
env, handler = read_wsgi_handler(response.physical_path) 
File "c:\python27\lib\site-packages\wfastcgi.py", line 635, in read_wsgi_handler 
handler = get_wsgi_handler(os.getenv("WSGI_HANDLER")) 
File "c:\python27\lib\site-packages\wfastcgi.py", line 618, in get_wsgi_handler 
raise ValueError('"%s" could not be imported%s' % (handler_name, last_tb)) 
ValueError: "flask_app.application()" could not be imported: Traceback (most recent call last): 
File "c:\python27\lib\site-packages\wfastcgi.py", line 602, in get_wsgi_handler 
handler = __import__(module_name, fromlist=[name_list[0][0]]) 
File ".\flask_app.py", line 7, in <module> 
from app import app as application 
File ".\app\__init__.py", line 67, in <module> 
from flask_restless import APIManager 
ImportError: No module named flask_restless 

Je pense que cela a à voir avec la façon dont j'ai installé flask_restless. Je l'ai installé en utilisant

pip install -e git://github.com/jfinkels/flask-restless.git#egg=flask_restless 

qui ne semble pas ajouter flask_restless au répertoire Lib/site-packages. Mais ce n'est pas un problème lorsque je lance l'application manuellement.

Voici mon web.config:

<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python27\python.exe|C:\Python27\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> 
    </handlers> 
    </system.webServer> 

    <appSettings> 
    <!-- Required settings --> 
    <add key="WSGI_HANDLER" value="flask_app.application()" /> 
    <add key="PYTHONPATH" value="C:\www\flask_app\virtualenv\src;C:\www\flask_app\virtualenv\Lib\site-packages;C:\www\flask_app\app" /> 

    <!-- Optional settings --> 
    <add key="WSGI_LOG" value="C:\inetpub\logs\wsgi.log" /> 
    <add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" /> 
    </appSettings> 
    </configuration> 

Et mon flask_app.py est la suivante:

this_file = 'C:/www/flask_app/virtualenv/Scripts/activate_this.py' 
with open(this_file) as f: 
    code = compile(f.read(), this_file, 'exec') 
    exec(code) 


from app import app as application 

Répondre

2

Je ne sais pas si cela est correct, mais ça n'a pas fonctionné pour moi. Il y avait quelques paquets différents qui ne pouvaient pas être trouvés par wfastcgi, en plus de flask-agité. Donc, pour résoudre ce problème, j'ai fini par activer l'env virtuel et imprimer ma variable sys.path. J'ai ensuite copié tous les chemins dans la clé PYTHONPATH dans mon fichier web.config.

Alors mon web.config ressemble maintenant à ceci:

<configuration> 
<system.webServer> 
<handlers> 
    <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python27\python.exe|C:\Python27\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> 
</handlers> 
</system.webServer> 

<appSettings> 
<!-- Required settings --> 
<add key="WSGI_HANDLER" value="flask_app.application" /> 
<add key="PYTHONPATH" value="C:/www/Lib/site-packages;c:/python27/lib/site-packages/fabric-1.10.2-py2.7.egg;c:/python27/lib/site-packages/paramiko-1.16.0-py2.7.egg;c:/python27/lib/site-packages/ecdsa-0.13-py2.7.egg;c:/python27/lib/site-packages/pycrypto-2.6.1-py2.7-win32.egg;c:/python27/lib/site-packages/psycopg2-2.5.2-py2.7.egg;C:/Windows/system32/python27.zip;c:/python27/DLLs;c:/python27/lib;c:/python27/lib/plat-win;c:/python27/lib/lib-tk;c:/python27;c:/python27/lib/site-packages;C:/www/flask_app/virtualenv/src;C:/www/flask_app/virtualenv/Lib/site-packages;C:/www/flask_app/app;C:\www\flask_app\virtualenv\Lib\site-packages\Flask_Restless-1.0.0b1-py2.7.egg" /> 

<!-- Optional settings --> 
<add key="WSGI_LOG" value="C:/www/flask_app/flask.log" /> 
<add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" /> 
</appSettings> 
</configuration> 
+1

aide de la touche = « PYTHONPATH » Figé un problème que j'ai lutté avec pendant des semaines. Je vous remercie! – Ari