Al agregar una declaración, import pyodbc provoca un error interno del servidor en el servidor HTTP Apache
Para ejecutar el archivo python antiguo de la escuela normal en el servidor Apache. Había codificado de esta manera
index.html<form action="/cgi-bin/hello_get.py" method="post">
First Name: <input type="text" name="first_name"> <br />
Last Name: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>
hello_get.py#!C:/Users/Desktop/AppData/Local/Programs/Python/Python36-32/python
# Import modules for CGI handling
import cgi, cgitb
import pyodbc
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Get data from fields
first_name = form.getvalue('first_name')
last_name = form.getvalue('last_name')
print("Content-Type:text/html\r\n\r\n")
print("<html>")
print("<head>")
print("<title>Hello - Second CGI Program</title>")
print("</head>")
print("<body>")
print("<h2>Hello %s %s</h2>" % (first_name, last_name))
print("</body>")
print("</html>")
He intentado correr en Python Shell. Funciona perfectamente
También en el archivo httpd.conf:
LoadModule pyodbc_module "c:/users/desktop/appdata/local/programs/python/python36-32/lib/site-packages/pyodbc.cp36-win32.pyd"
Resultados
httpd: Syntax error on line 571 of C:/Apache24/conf/httpd.conf: Can't
locate API module structure `pyodbc_module' in file
C:/Users/Desktop/AppData/Local/Programs/Python/Python36-32/Lib/site-packages/pyodbc.cp36-win32.pyd:
No error
Entonces, ¿cómo necesitoimportar pyodbc en el archivo .py, así como cómocargar el módulo pyodbc en el servidor Apache HTTP?
Como @FlipperPA dijo que cargue el módulo mod_wsgi en este enlaceHaga clic aquí
C:\>pip install mod_wsgi-4.5.22+ap24vc9-cp27-cp27m-win32.whl
C:\Windows\system32>pip install htmlpy
Collecting htmlpy
Downloading htmlPy-2.0.3.tar.gz
Installing collected packages: htmlpy
Running setup.py install for htmlpy ... done
Successfully installed htmlpy-2.0.3
También en el archivo httpd.conf:
LoadFile "c:/users/desktop/appdata/local/programs/python/python36-32/python36.dll"
LoadModule wsgi_module "c:/users/desktop/appdata/local/programs/python/python36-32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win32.pyd"
LoadModule pyodbc_module "c:/users/desktop/appdata/local/programs/python/python36-32/lib/site-packages/pyodbc.cp36-win32.pyd"
WSGIPythonHome "c:/users/vitriv-desktop/appdata/local/programs/python/python36-32"
Esto es test_wsgi.py#!C:/Users/AppData/Local/Programs/Python/Python36-32/python
import os
import sys
from wsgiref.simple_server import make_server
def hello_world_app(environ, start_response):
status = '200 OK' # HTTP Status
headers = [('Content-type', 'text/plain')] # HTTP Headers
start_response(status, headers)
pyver = '.'.join(map(str, tuple(sys.version_info)[:3]))
return ["Hello World (from Python %s WSGI)" % pyver]
application = hello_world_app
if __name__ == '__main__':
port = int(os.getenv('PORT', '8000'))
srv = make_server('127.0.0.2', port, application)
print("Serving...")
srv.serve_forever()
Salida:
Hola mundo (de Python 2.7.14 WSGI)
¿Pero ahora no sé cómo usar la Interfaz de puerta de enlace del servidor web?
Ayúdenme a resolver al menos un método de los dos métodos anteriores