簡體   English   中英

WSGI、Flask、Python 2.7、Apache2、ImportError = 沒有名為 Flask 的模塊

[英]WSGI, Flask, Python 2.7, Apache2, ImportError = no modul named flask

我正在按照本教程使用 WSGI Apache2 在 Ubuntu 上部署 Flask 這是我的目錄的樣子:

FlaskApp
    FlaskApp
        static
        templates
        __init__.py
    flaskapp.wsgi

我創建了一個 virtualenv。 我在 virtualenv 中安裝了 Flask。 當我激活 virtualenv 時, __ini__.py啟動網絡服務器。

當我嘗試連接到實時服務器時,出現內部服務器錯誤。

問題是 WSGI 沒有找到 Flask。 但是安裝了 Flask。 當我嘗試在 virtualenv 中安裝 Flask 時,我得到“要求已經滿足:/usr/lib/python2.7/dist-packages (0.10.1) 中的燒瓶”。 那是問題嗎?

我把編譯后的版本改成了python 2.7

[Tue Oct 30 15:16:23.863324 2018] [mpm_event:notice] [pid 29283:tid 139720393185152] AH00491: caught SIGTERM, shutting down
[Tue Oct 30 15:16:23.943705 2018] [wsgi:warn] [pid 29915:tid 140238218004352] mod_wsgi: Compiled for Python/2.7.11.
[Tue Oct 30 15:16:23.943747 2018] [wsgi:warn] [pid 29915:tid 140238218004352] mod_wsgi: Runtime using Python/2.7.12.
[Tue Oct 30 15:16:23.944430 2018] [mpm_event:notice] [pid 29915:tid 140238218004352] AH00489: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/2.7.12 configured -- resuming normal operations
[Tue Oct 30 15:16:23.944448 2018] [core:notice] [pid 29915:tid 140238218004352] AH00094: Command line: '/usr/sbin/apache2'
[Tue Oct 30 15:17:25.679253 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 198.167.223.52:14003] mod_wsgi (pid=29918): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
[Tue Oct 30 15:17:25.679276 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 198.167.223.52:14003] mod_wsgi (pid=29918): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'.
[Tue Oct 30 15:17:25.679292 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 198.167.223.52:14003] Traceback (most recent call last):
[Tue Oct 30 15:17:25.679304 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 198.167.223.52:14003]   File "/var/www/FlaskApp/flaskapp.wsgi", line 19, in <module>
[Tue Oct 30 15:17:25.679340 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 198.167.223.52:14003]     from FlaskApp import app as application
[Tue Oct 30 15:17:25.679349 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 198.167.223.52:14003]   File "/var/www/FlaskApp/FlaskApp/__init__.py", line 1, in <module>
[Tue Oct 30 15:17:25.679371 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 198.167.223.52:14003]     from flask import Flask
[Tue Oct 30 15:17:25.679388 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 198.167.223.52:14003] ImportError: No module named flask
[Tue Oct 30 15:17:38.089586 2018] [wsgi:error] [pid 29918:tid 140237992269568]     [remote 95.91.245.250:11699] mod_wsgi (pid=29918): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
[Tue Oct 30 15:17:38.089614 2018] [wsgi:error] [pid 29918:tid 140237992269568] [remote 95.91.245.250:11699] mod_wsgi (pid=29918): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'.
[Tue Oct 30 15:17:38.089629 2018] [wsgi:error] [pid 29918:tid 140237992269568] [remote 95.91.245.250:11699] Traceback (most recent call last):
[Tue Oct 30 15:17:38.089644 2018] [wsgi:error] [pid 29918:tid 140237992269568] [remote 95.91.245.250:11699]   File "/var/www/FlaskApp/flaskapp.wsgi", line 19, in <module>
[Tue Oct 30 15:17:38.089663 2018] [wsgi:error] [pid 29918:tid 140237992269568] [remote 95.91.245.250:11699]     from FlaskApp import app as application
[Tue Oct 30 15:17:38.089670 2018] [wsgi:error] [pid 29918:tid 140237992269568] [remote 95.91.245.250:11699]   File "/var/www/FlaskApp/FlaskApp/__init__.py", line 1, in <module>
[Tue Oct 30 15:17:38.089679 2018] [wsgi:error] [pid 29918:tid 140237992269568] [remote 95.91.245.250:11699]     from flask import Flask
[Tue Oct 30 15:17:38.089693 2018] [wsgi:error] [pid 29918:tid 140237992269568] [remote 95.91.245.250:11699] ImportError: No module named flask
[Tue Oct 30 15:17:38.417619 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 95.91.245.250:11699] mod_wsgi (pid=29918): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
[Tue Oct 30 15:17:38.417638 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 95.91.245.250:11699] mod_wsgi (pid=29918): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'.
[Tue Oct 30 15:17:38.417660 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 95.91.245.250:11699] Traceback (most recent call last):
[Tue Oct 30 15:17:38.417674 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 95.91.245.250:11699]   File "/var/www/FlaskApp/flaskapp.wsgi", line 19, in <module>
[Tue Oct 30 15:17:38.417696 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 95.91.245.250:11699]     from FlaskApp import app as application
[Tue Oct 30 15:17:38.417702 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 95.91.245.250:11699]   File "/var/www/FlaskApp/FlaskApp/__init__.py", line 1, in <module>
[Tue Oct 30 15:17:38.417711 2018] [wsgi:error] [pid 29918:tid 140238109865728] [remote 95.91.245.250:11699]     from flask import Flask
[Tue Oct 30 15:17:38.417723 2018] [wsgi:error] [pid 29918:tid 140238109865728]     [remote 95.91.245.250:11699] ImportError: No module named flask

__init__.py

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello, I love Digital Ocean!"
if __name__ == "__main__":
    app.run()

FlaskApp/flaskapp.wsgi

activator = '/var/www/FlaskApp/FlaskApp/venv/bin/activate_this.py'  # Looted from virtualenv; should not require modification, since it's defined relatively
with open(activator) as f:
    exec(f.read(), {'__file__': activator})

import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")

from FlaskApp import app as application
application.secret_key = 'Add your secret key'

/etc/apache2/sites-enabled/FlaskApp.conf

<VirtualHost *:80>
                ServerName 18.196.125.229
                ServerAdmin admin@18.196.125.229
#               WSGIDaemonProcess FlaskApp python-home=/var/www/FlaskApp/FlaskApp/venv/lib/python2.7/
# WSGIDaemonProcess FlaskApp python-home=flask in /usr/local/lib/python2.7/dist-packages/
WSGIDaemonProcess FlaskApp python-home=/var/www/FlaskApp/FlaskApp/venv/FlaskApp
                 WSGIProcessGroup FlaskApp
                WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
                <Directory /var/www/FlaskApp/FlaskApp/>
                        Order allow,deny
                        Allow from all
                </Directory>
                Alias /static /var/www/FlaskApp/FlaskApp/static
                <Directory /var/www/FlaskApp/FlaskApp/static/>
                        Order allow,deny
                        Allow from all
                </Directory>
                ErrorLog ${APACHE_LOG_DIR}/error.log
                LogLevel warn
                CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

我試圖卸載燒瓶 - 在虛擬環境中重新安裝燒瓶:

sudo pip 卸載燒瓶

/usr/local/lib/python2.7/dist-packages/pip-18.1- 
py2.7.egg/pip/_vendor/requests/__init__.py:83: RequestsDependencyWarning: Old         version of cryptography ([1, 2, 3]) may cause slowdown.
  warnings.warn(warning, RequestsDependencyWarning)
The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want     sudo's -H flag.
Uninstalling Flask-0.10.1:
  Would remove:
    /usr/lib/python2.7/dist-packages/Flask-0.10.1.egg-info
    /usr/lib/python2.7/dist-packages/flask
Proceed (y/n)? y
  Successfully uninstalled Flask-0.10.1

源 venv/bin/激活

須藤 pip 安裝燒瓶

(venv) ubuntu@ip-172-26-9-95:/var/www/FlaskApp/FlaskApp$ sudo pip install Flask
/usr/local/lib/python2.7/dist-packages/pip-18.1-py2.7.egg/pip/_vendor/requests/__init__.py:83: RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slowdown.
warnings.warn(warning, RequestsDependencyWarning)
The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not     owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting Flask
  Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)
100% |████████████████████████████████| 92kB 17.8MB/s
Requirement already satisfied: Jinja2>=2.10 in /usr/local/lib/python2.7/dist- 
packages (from Flask) (2.10)
Requirement already satisfied: itsdangerous>=0.24 in     /usr/local/lib/python2.7/dist-packages (from Flask) (1.1.0)
Requirement already satisfied: Werkzeug>=0.14 in /usr/local/lib/python2.7/dist-packages (from Flask) (0.14.1)
Requirement already satisfied: click>=5.1 in /usr/local/lib/python2.7/dist-packages (from Flask) (7.0)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python2.7/dist-packages (from Jinja2>=2.10->Flask) (1.0)
Installing collected packages: Flask
Successfully installed Flask-1.0.2

仍然相同的導入錯誤:沒有名為燒瓶的模塊

您的問題是您正在使用 sudo 執行 pip。

在 virtualenv 中,您可以訪問和控制 pip 需要修改的所有文件。 通過使用 sudo 運行,您以超級用戶身份執行,從而在 virtualenv 的上下文之外執行 pip。

通常,您應該謹慎使用 pip 和 sudo,因為從不太可靠的來源安裝軟件包時,您可能會發現自己安裝了惡意軟件。

要安裝成功,

# Must be in virtualenv.
pip install flask

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM