Apache/wsgi 使用错误的 python 版本

7 python python-3.x

我在 ubuntu 上安装了两个版本的 python——3.7 和 2.7。当我添加一个“普通”sites-enabled/000-default.conf配置时,它试图使用 python2.7,所以它没有找到已安装的应用程序:

WSGIScriptAlias / home/david/data-py/wsgi.py
<VirtualHost *:80>
    <Directory /home/david/data-py>
       Order allow,deny
       Allow from all
       Require all granted
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

导入错误:没有名为 django.core.wsgi 的模块

但是,如果我指定我的项目的 python 路径(它是使用创建的$ virtualenv .,并且我使用以下命令启动文件:

WSGIScriptAlias / home/david/data-py/wsgi.py
WSGIPythonHome /home/david/data-py
Run Code Online (Sandbox Code Playgroud)

然后我收到另一个错误:

导入错误:没有名为站点的模块

这是什么意思,我怎样才能在 apache/wsgi 中安装项目?

Ron*_*Ron 5

我刚刚遇到了完全相同的问题,结果我在我的服务器上安装了错误版本的 mod_wsgi(我安装的是 python 2 而不是 python 3)。如果您查看存储在 apache error.log 文件(在我的情况下为 /var/log/apache2/error.log)中的回溯,您可以看到 apache 正在尝试使用哪个版本,我按如下方式解决了它(在 Ubuntu 上):

sudo apt-get remove libapache2-mod-python libapache2-mod-wsgi 
sudo apt-get install libapache2-mod-wsgi-py3
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

此外,我确保将 mod_wsgi 包安装到我的虚拟环境中(我不确定这是否有必要)。为此,我执行了以下操作:

cd <path to my virtual env bin folder>
sudo ./pip3 install mod_wsgi-httpd 
sudo ./pip3 install mod-wsgi
Run Code Online (Sandbox Code Playgroud)