【问题标题】:ImportError: No module named os uwsgi + django + linuxImportError:没有名为 os uwsgi + django + linux 的模块
【发布时间】:2014-11-03 15:18:43
【问题描述】:

我正在尝试使用 nginx 配置 uswgi

我遵循的步骤是:

安装 NGINX

sudo yum install nginx
sudo /etc/init.d/nginx start &

yum -y install python-pip

安装 Python

wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
tar -xzf Python-2.7.6.tgz  
cd Python-2.7.6
./configure  
make  
sudo make install  

安装 Uwsgi

pip install uwsgi

安装 Django

sudo pip install git+https://github.com/django-nonrel/django

命令

uwsgi --socket /tmp/wsgi.sock --module App.wsgi:application --chmod-socket=666 -H /usr/local/bin/python --master --processes 4 --threads 2 &

错误

   "wsgi.py", line 10, in <module>
        import os
    ImportError: No module named os
    unable to load app 0 (mountpoint='') (callable not found or import error)

wsgi.py 内容

10: import os
11: os.environ.setdefault("DJANGO_SETTINGS_MODULE", "SecurityInsights.settings")
12:
13: from django.core.wsgi import get_wsgi_application
14: application = get_wsgi_application()

并且在控制台加载os模块时没有问题

/usr/local/bin/python
Python 2.7.6 (default, Sep  9 2014, 18:55:35) 
[GCC 4.8.2 20131212 (Red Hat 4.8.2-7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>>

编辑

根据@ZZY 的建议,我检查了python manage.py shell 中的python 版本,它与全局2.7.6 不同的是2.6.9。这有什么不同吗?

【问题讨论】:

  • 在“python manage.py shell”中“import os”会发生什么? uwsgi的日志中打印的“Python版本”是什么?
  • 哦,2.6.9不一样
  • "import os" 工作正常。如何升级 python?

标签: python django nginx wsgi uwsgi


【解决方案1】:

假设您确实需要在 Python2.7 中运行所有东西。然后你可以尝试重新安装支持 Python27 的 uwsgi:

sudo pip uninstall uwsgi

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd <dir>
sudo python2.7 uwsgiconfig.py --plugin plugins/python core python27
make

另一种可能的解决方案:按照guide 安装 pip2.7,然后使用 pip2.7 安装所有内容(uwsgi、Django、...)。
该指南还介绍了 virtualenv,它是使用 Python 进行开发的强烈推荐工具。顾名思义,它创建了单独的“python 包空间”,因此您可以在计算机中拥有不同版本的 Django 或任何 Python 包,用于不同的项目。

【讨论】:

  • 谢谢你:)。我已经完成了。现在还有另一个错误。 Set PythonHome to /usr/local/.localpython/bin/python ImportError: No module named site需要设置环境变量吗?
  • 我没有看到这个错误。您可以尝试“-H ......”为 uwsgi 设置 PythonHome。如果您使用的是 Virtualenv,则路径将位于 virtualenv 文件夹下。这个答案提到了使用“--no-site”参数来解决问题,你也可以试试:stackoverflow.com/questions/18417823/…
  • importError 表示 uwsgi 在 vi​​rtualenv 中找不到它正在寻找的模块。确保 virtualenv 路径正确。确保模块在 virtualenv 中。除非您不打算在“站点包”中使用任何东西,否则不要使用“--no-site”标志。
猜你喜欢
  • 2014-09-18
  • 1970-01-01
  • 2018-09-09
  • 1970-01-01
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 2023-03-06
相关资源
最近更新 更多