无法在树莓派上的 Python3.5 下使用 apache2、mod_wsgi 导入flask_cors

天际线124

我尝试使用 Apache2 (2.4.25) 和 mod_wsgi 在 Raspberry Pi 3B+ 上设置基于 Flask 的网站,但是我无法在 Python3.5 中导入模块 flask_cors ...

我用命令安装了 mod_wsgi ssudo apt-get install libapache2-mod-wsgi

因为我只打算使用 Raspberry 来托管我的网站,所以我尝试使用 Python 3.5 版安装 Flask 系统范围所需的软件包,使用以下命令:pip3 install -r requirements.txt其中 requirements.txt 如下:

click==6.7
Flask==0.12.3
Flask-Cors==3.0.3
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
six==1.11.0
Werkzeug==0.12.2
Requests==2.20.0

我想我明白在 Raspi 上,最好通过命令导入模块,pip3 install -U <module>因为这些包没有安装在 python 的默认位置,在我的情况下,通过以下命令确认了这一点,该命令python -m site产生以下信息:

sys.path = [
    '/home/pi/.local/lib/python3.5/site-packages',
    '/usr/lib/python35.zip',
    '/usr/lib/python3.5',
    '/usr/lib/python3.5/plat-arm-linux-gnueabihf',
    '/usr/lib/python3.5/lib-dynload',
    '/usr/local/lib/python3.5/dist-packages',
    '/usr/local/lib/python3.5/dist-packages/virtualenv-16.1.0-py3.5.egg',
    '/usr/lib/python3/dist-packages',
]
USER_BASE: '/home/pi/.local' (exists)
USER_SITE: '/home/pi/.local/lib/python3.5/site-packages' (exists)
ENABLE_USER_SITE: True

我的 Flask 和依赖项确实安装在该/home/pi/.local/lib/python3.5/site-packages文件夹中。但这似乎不是问题,因为在 python shell 上检查导入时,系统范围内的一切似乎都很好:

pi@raspberrypi:~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from flask_cors import CORS
>>> 

知道了这一点,我尝试将以下文件放在我的 apache 服务器上:

/etc/apache2/sites-enabled 文件夹中的flaskregul.conf:

<VirtualHost *:80>
    WSGIScriptAlias / /var/www/flaskregul/flaskregul.wsgi
    Alias /static/ /var/www/flaskregul/dist/static/
    <Directory /var/www/flaskregul/dist/static>
        WSGIProcessGroup flaskregul
            WSGIApplicationGroup %{GLOBAL}
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog /var/log/apache2/flask.monnomdedomaine.com.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

/var/www/flaskregul 中的flaskregul.wsgi:

import sys
sys.path.insert(0,"/var/www/flaskregul") # path to my __init__.py file
sys.path.insert(0,"/home/pi/.local/lib/python3.5/site-packages") # path to the site-packages folder where the modules are installed by pip3
from __init__ import app as application

/var/www/flaskregul 中的__init__.py:

from flask import Flask
from flask_cors import CORS

我遇到了无法专门导入 flask_cors 模块的情况,因为启动文件 __init__.py 会在文件中产生以下错误/var/log/apache2/flask.monnomdedomaine.com.log

[Sat Nov 10 00:37:22.220394 2018] [wsgi:error] [pid 6804:tid 1955591216] [client 192.168.1.67:33550] mod_wsgi (pid=6804): Target WSGI script '/var/www/flaskregul/flaskregul.wsgi' cannot be loaded as Python module.
[Sat Nov 10 00:37:22.220972 2018] [wsgi:error] [pid 6804:tid 1955591216] [client 192.168.1.67:33550] mod_wsgi (pid=6804): Exception occurred processing WSGI script '/var/www/flaskregul/flaskregul.wsgi'.
[Sat Nov 10 00:37:22.221936 2018] [wsgi:error] [pid 6804:tid 1955591216] [client 192.168.1.67:33550] Traceback (most recent call last):
[Sat Nov 10 00:37:22.222365 2018] [wsgi:error] [pid 6804:tid 1955591216] [client 192.168.1.67:33550]   File "/var/www/flaskregul/flaskregul.wsgi", line 1, in <module>
[Sat Nov 10 00:37:22.222395 2018] [wsgi:error] [pid 6804:tid 1955591216] [client 192.168.1.67:33550]     from __init__ import app as application
[Sat Nov 10 00:37:22.222445 2018] [wsgi:error] [pid 6804:tid 1955591216] [client 192.168.1.67:33550]   File "/var/www/flaskregul/__init__.py", line 2, in <module>
[Sat Nov 10 00:37:22.222463 2018] [wsgi:error] [pid 6804:tid 1955591216] [client 192.168.1.67:33550]     from flask_cors import CORS
[Sat Nov 10 00:37:22.222557 2018] [wsgi:error] [pid 6804:tid 1955591216] [client 192.168.1.67:33550] ImportError: No module named 'flask_cors'

而 Flask 的进口似乎很好......

我试图通过更改 WSGI 脚本文件来调试这个:

import sys
sys.path.insert(0,"/var/www/flaskregul")
sys.path.insert(0,"/home/pi/.local/lib/python3.5/site-packages")

def application(environ, start_response):
    status = '200 OK'

    output = u''
    output += u'sys.version = %s\n' % repr(sys.version)
    output += u'sys.prefix = %s\n' % repr(sys.prefix)
    output += u'sys.path = %s\n' % repr(sys.path)

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output.encode('UTF-8')] 

这是一条来自 mod_wsgi 网页上的建议:https : //modwsgi.readthedocs.io/en/develop/user-guides/checking-your-installation.html打开网页时,我得到这样的结果:

sys.version = '3.5.3 (default, Sep 27 2018, 17:25:39) \n[GCC 6.3.0 20170516]'
sys.prefix = '/usr'
sys.path = ['/home/pi/.local/lib/python3.5/site-packages', '/var/www/flaskregul', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-arm-linux-gnueabihf', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/local/lib/python3.5/dist-packages/virtualenv-16.1.0-py3.5.egg', '/usr/lib/python3/dist-packages']

我的印象是路径是正确的!我实际上成功地导入了位于 /var/www/flaskregul 位置的我自己的模块......

我迷路了,我不明白为什么特别是模块flask_cors不可用,因为它确实在路径中:

pi@raspberrypi:~/.local/lib/python3.5/site-packages $ l | grep flask
drwxr-xr-x 5 pi pi   4096 nov.   9 23:30 flask
drwxr-xr-x 3 pi pi   4096 nov.  10 00:08 flask_cors
pi@raspberrypi:~/.local/lib/python3.5/site-packages $ l flask_cors 
total 44
-rw-r--r-- 1 pi pi 13771 nov.  10 00:08 core.py
-rw-r--r-- 1 pi pi  4937 nov.  10 00:08 decorator.py
-rw-r--r-- 1 pi pi  7405 nov.  10 00:08 extension.py
-rw-r--r-- 1 pi pi   924 nov.  10 00:08 __init__.py
drwxr-xr-x 2 pi pi  4096 nov.  10 00:08 __pycache__
-rw-r--r-- 1 pi pi    22 nov.  10 00:08 version.py

任何帮助将不胜感激!我目前正在以令人担忧的速度掉头发!

天际线124

哦,天哪,我在放弃之前绝望地尝试解决了这个问题。

我在shell上执行了以下命令:(pip是python3.5的pip /!\)

pip uninstall flask
pip uninstall flask_cors
sudo pip install --upgrade pip
hash -d pip
sudo pip install -U flask
sudo pip install -U flask_cors

网站启动并运行!:D

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

让Flask使用Python3(Apache / mod_wsgi)

来自分类Dev

使用apache2在mod_wsgi上运行django python 3.4

来自分类Dev

Apache2 带有 mod_wsgi python3 'TypeError:' 并返回错误 500

来自分类Dev

在 Google Compute Engine 上为 Flask 配置 Apache WSGI(使用 mod_wsgi 的 Flask 导入错误)

来自分类Dev

无法使用mod_wsgi从python wsgi连接到pymssql

来自分类Dev

如何使用apache2和mod_wsgi获取Django调试页面

来自分类Dev

使用mod_wsgi在Apache2上部署Django-Django项目的正确位置?

来自分类Dev

使用mod_wsgi和apache2的服务器内部错误

来自分类Dev

使用mod_wsgi在Apache2上部署Django-Django项目的正确位置?

来自分类Dev

无法使用Apache + mod_wsgi远程访问Django应用

来自分类Dev

Apache 无法使用 mod_wsgi 作为 Windows 服务启动

来自分类Dev

在apache2 / windows上以模式wsgi执行的python3 flask app问题

来自分类Dev

如何使用Apache2和Mod-WSGI运行Flask

来自分类Dev

使用mod_wsgi在python中导入表单当前目录

来自分类Dev

在树莓派上使用python进行SSH / SCP(或类似功能)

来自分类Dev

在树莓派上使用python进行SSH / SCP(或类似功能)

来自分类Dev

在 URL 中没有额外组件的情况下配置 Django/Apache2/mod_wsgi 的问题

来自分类Dev

在Ubuntu 14.04(Python 3.4)上使用Apache2和libapache2-mod-wsgi-py3的AssertionError

来自分类Dev

设置文件的位置,用于使用mod_wsgi在Apache2上使用Django部署静态文件

来自分类Dev

(WSGI - Apache2/Flask) 导入错误:无法导入名称应用

来自分类Dev

如何在centos7,Apache / 2.4.6下使用Python3.5.2编译mod_wsgi 4.5.3

来自分类Dev

无法在树莓派上为python3.4安装urllib3

来自分类Dev

Flask,Apache,mod_wsgi:无法在服务器端保存文件

来自分类Dev

使用Apache和Mod_wsgi的Flask Hello World仅在Webroot中显示文件

来自分类Dev

无法使用mod_wsgi确定apache中HTTP 500的原因

来自分类Dev

Python mod_wsgi无法正常工作

来自分类Dev

在apache 2.4和python 3.3上运行django 1.6 app并使用mod_wsgi报错500

来自分类Dev

使用ssh在树莓派上用vlc播放m3u

来自分类Dev

Python BaseHTTPServer与Apache和mod_wsgi

Related 相关文章

  1. 1

    让Flask使用Python3(Apache / mod_wsgi)

  2. 2

    使用apache2在mod_wsgi上运行django python 3.4

  3. 3

    Apache2 带有 mod_wsgi python3 'TypeError:' 并返回错误 500

  4. 4

    在 Google Compute Engine 上为 Flask 配置 Apache WSGI(使用 mod_wsgi 的 Flask 导入错误)

  5. 5

    无法使用mod_wsgi从python wsgi连接到pymssql

  6. 6

    如何使用apache2和mod_wsgi获取Django调试页面

  7. 7

    使用mod_wsgi在Apache2上部署Django-Django项目的正确位置?

  8. 8

    使用mod_wsgi和apache2的服务器内部错误

  9. 9

    使用mod_wsgi在Apache2上部署Django-Django项目的正确位置?

  10. 10

    无法使用Apache + mod_wsgi远程访问Django应用

  11. 11

    Apache 无法使用 mod_wsgi 作为 Windows 服务启动

  12. 12

    在apache2 / windows上以模式wsgi执行的python3 flask app问题

  13. 13

    如何使用Apache2和Mod-WSGI运行Flask

  14. 14

    使用mod_wsgi在python中导入表单当前目录

  15. 15

    在树莓派上使用python进行SSH / SCP(或类似功能)

  16. 16

    在树莓派上使用python进行SSH / SCP(或类似功能)

  17. 17

    在 URL 中没有额外组件的情况下配置 Django/Apache2/mod_wsgi 的问题

  18. 18

    在Ubuntu 14.04(Python 3.4)上使用Apache2和libapache2-mod-wsgi-py3的AssertionError

  19. 19

    设置文件的位置,用于使用mod_wsgi在Apache2上使用Django部署静态文件

  20. 20

    (WSGI - Apache2/Flask) 导入错误:无法导入名称应用

  21. 21

    如何在centos7,Apache / 2.4.6下使用Python3.5.2编译mod_wsgi 4.5.3

  22. 22

    无法在树莓派上为python3.4安装urllib3

  23. 23

    Flask,Apache,mod_wsgi:无法在服务器端保存文件

  24. 24

    使用Apache和Mod_wsgi的Flask Hello World仅在Webroot中显示文件

  25. 25

    无法使用mod_wsgi确定apache中HTTP 500的原因

  26. 26

    Python mod_wsgi无法正常工作

  27. 27

    在apache 2.4和python 3.3上运行django 1.6 app并使用mod_wsgi报错500

  28. 28

    使用ssh在树莓派上用vlc播放m3u

  29. 29

    Python BaseHTTPServer与Apache和mod_wsgi

热门标签

归档