我正在读一本有关TDD和Django的书,其中有一个部署部分。我在尝试使用以下命令运行gunicorn时遇到问题:
/root/sites/django_blog/virtualenv/bin/gunicorn --bind unix:/tmp/django_blog.socket django_blog.wsgi:application
它失败并出现以下错误:
ModuleNotFoundError: No module named 'django_blog'
但是当我激活我的virtualenv而不是将完整的通行证写给gunicorn时,我就选择了:
gunicorn --bind unix:/tmp/django_blog.socket django_blog.wsgi:application
一切正常!问题是我仍然需要以第一方式运行它,因为我将在nginx服务文件中使用它。我写了这个错误,并尝试了几种解决方案,但它们对我不起作用。我想我必须对环境变量做些什么,但我不知道到底是什么。
答案 0 :(得分:1)
您可以在加载应用程序之前为gunicorn指定目录以切换到该目录。
只需将--chdir /path/to/directory
添加到启动中。
在您的情况下,可能如下所示:
/root/sites/django_blog/virtualenv/bin/gunicorn --chdir /root/sites/django_blog/source --bind unix:/tmp/django_blog.socket django_blog.wsgi:application
这是特定Gunicorn设置文档的link。
希望能帮助您编写愉快的代码!