使用错误的python版本的Apache / wsgi

时间:2018-10-05 03:19:01

标签: 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>
  

ImportError:没有名为django.core.wsgi的模块

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

WSGIScriptAlias / home/david/data-py/wsgi.py
WSGIPythonHome /home/david/data-py

然后我得到另一个错误:

  

ImportError:没有名为站点的模块

这是什么意思,如何将项目安装在apache / wsgi中?

2 个答案:

答案 0 :(得分:0)

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

sudo apt-get remove libapache2-mod-python libapache2-mod-wsgi 
sudo apt-get install libapache2-mod-wsgi-py3
sudo service apache2 restart

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

cd <path to my virtual env bin folder>
sudo ./pip3 install mod_wsgi-httpd 
sudo ./pip3 install mod-wsgi

答案 1 :(得分:0)

大约一个月前,我也遇到了同样的问题(由python2 vs python3引起)。 这是我的建议:

  1. 从python2中删除django和pip(这将避免造成混乱)
  2. Python3带有内置的pip3-因此,请继续安装/更新Django
  3. 删除mod_wsgi.so,您已在操作系统级别安装/设置
  4. 安装python3-dev / python3-devel + apache-dev / apache-devel软件包
  5. 尝试pip3 install mod-wsgi-如果失败,请使用此处提到的步骤 (https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html
  6. 位于https://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html的更多疑难解答