【问题标题】:uwsgi + django : ImportError: no module named OSuwsgi + django:ImportError:没有名为 OS 的模块
【发布时间】:2015-04-03 17:58:53
【问题描述】:

================ 更新 ===================

我尝试从 ini 文件中注释掉 home、pythonpath、virtualenv 和 env 变量,并在我的 wsgi.py 中设置 PYTHONPATH,如下所示:

os.environ.setdefault("PYTHONPATH", "/root/virtual_env")

但是,我收到了这个新错误:

> ImportError: No module named django.core.wsgi

为了解决这个新问题,我创建了一个 .pth 文件并将其放在我的虚拟环境的站点包中(即 /root/virtual_env/lib/python2.7/site-packages) 包含这个:

/root/virtual_env/lib/python2.7/site-packages/django

但是这样做之后,当我运行../bin/uwsgi myproject_uwsgi.ini时错误仍然存​​在

======================更新结束==================== ==

在我的虚拟环境中(通过 virtualenv),我仍然在经历一个

ImportError: 没有名为 os 的模块 无法加载应用程序 0 (mountpoint='') (找不到可调用或导入错误) * 未加载任何应用程序。进入全动态模式 *

当我运行 ../bin/uwsgi --ini myproject_uwsgi.ini 时。以下是上述ini的完整内容。正如你在下面看到的,我已经回家了,pythonpath、virtualenv 和 env 变量/参数,以摆脱错误。尽管如此,还是没有运气。我应该在这里做什么?提前致谢!

#myproject_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /root/virtual_env/myproject
# Django wsgi file
module          = myproject.wsgi:application
# the virtualenv (full path)
home            = /root/virtual_env/myproject
pythonpath      = /root/virtual_env/myproject
virtualenv      = /root/virtual_env/myproject
env             = DJANGO_SETTINGS_MODULE=myproject.settings

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 4
# the socket (use the full path to be safe
socket          = /root/virtual_env/myproject/myproject.sock
# ... with appropriate permissions - may be needed
chmod-socket    = 777
chown-socket    = uwsgi:uwsgi
# clear environment on exit
vacuum          = true

# other config options
uid = uwsgi
gid = uwsgi
processes = 4
daemonize = /var/log/uwsgi/myproject.log
no-site = true

【问题讨论】:

  • 您的实际虚拟环境在哪里(通常不是您的源代码所在的位置)。
  • 它的 /root/virtual_env

标签: python django uwsgi


【解决方案1】:

万一uwsgi突然坏了……

  1. Pip 从本地和全局环境中卸载 uwsgi pip uninstall uwsgi 这是最可能的原因。

  2. 安装uwsgi-python-pluginsudo apt-get install uwsgi-plugin-python3

  3. 将 .ini 配置中的插件指令更新为 plugin = python3

【讨论】:

  • 当 uwsgi 被 pip 安装时,它与现有的 uwsgi 包冲突。当插件指令与现有的 uwsgi 插件不匹配时,可能会出现错误。
【解决方案2】:

看来,你的 virtualenv 有问题。

pythonpathvirtualenv 不应该相等。 Virtualenv 应该在您的项目目录中。 例如,如果您的项目位于 /root/myproject,那么您的 virtualenv 应该在 /root/myproject/virtual_env 中。 您的 DJANGO_SETTINGS_MODULE 也不正确。

毕竟你的 uwsgi.ini 应该是这样的:

#myproject_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /root/myproject
# Django wsgi file
module          = wsgi:application
# the virtualenv (full path)
home            = /root/myproject
pythonpath      = /root/myproject
virtualenv      = /root/myproject/virtual_env
env             = DJANGO_SETTINGS_MODULE=settings

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 4
# the socket (use the full path to be safe
socket          = /root/myproject/myproject.sock
# ... with appropriate permissions - may be needed
chmod-socket    = 777
chown-socket    = uwsgi:uwsgi
# clear environment on exit
vacuum          = true

# other config options
uid = uwsgi
gid = uwsgi
processes = 4
daemonize = /var/log/uwsgi/myproject.log
no-site = true

【讨论】:

  • 感谢您的帮助。仍然遇到同样的错误
  • 您是否更改了代码和 virualenv 的位置?如果您仍然遇到相同的错误,请尝试从空项目开始。然后在其中创建 virtualenv 并尝试使用 uwsgi 运行它。你还应该在你的 virtualenv 中安装 uwsgi 作为 pip 包。尝试实现本教程:uwsgi-docs.readthedocs.org/en/latest/….
猜你喜欢
  • 1970-01-01
  • 2014-09-18
  • 2023-04-06
  • 2018-04-23
  • 2017-11-30
  • 2012-12-08
  • 1970-01-01
  • 2014-11-03
  • 2017-07-22
相关资源
最近更新 更多