我对django的工作方式很困惑。我按照一些指南测试了一个示例应用程序并让它在我的本地开发机上运行。它很棒。但是当我将这个示例应用程序移动到我的生产服务器时,我收到了这个错误:
$ sudo apt-get install python-django
所以,在我为示例应用程序设置的过程中,我做到了这一点:
$ django-admin startproject helloapp
然后:
$ cd /var/www/html/django-project/helloapp/
然后:
$ python manage.py runserver
然后:
# cd /var/www/html/helloapp
# python manage.py runserver
结果:
有效!祝贺你的第一个Django页面。
所以,我将文件helloapp /传输到我的生产服务器:
python-django
然后出现错误:
没有名为django.core.management的模块
我是否必须在生产服务器中安装django.core.management
- “global”作为我的生产服务器中的系统软件之一?
实际上python-django
是什么?可能有很多这种模块我需要运行我的应用程序。那么这些模块来自django的“全球”呢?
如果我的系统损坏或我有一天删除了gunicorn
,我的所有django应用程序也会破坏?
修改
我使用虚拟环境运行它,但它似乎与$ gunicorn helloapp.wsgi
[2017-05-18 22:33:37 +0000] [882] [INFO] Starting gunicorn 19.6.0
[2017-05-18 22:33:37 +0000] [882] [INFO] Listening at: http://127.0.0.1:8000 (882)
[2017-05-18 22:33:37 +0000] [882] [INFO] Using worker: sync
[2017-05-18 22:33:37 +0000] [886] [INFO] Booting worker with pid: 886
[2017-05-18 22:33:37 +0000] [886] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 557, in spawn_worker
worker.init_process()
File "/usr/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 126, in init_process
self.load_wsgi()
File "/usr/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 136, in load_wsgi
self.wsgi = self.app.wsgi()
File "/usr/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/usr/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
return self.load_wsgiapp()
File "/usr/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
return util.import_app(self.app_uri)
File "/usr/lib/python2.7/dist-packages/gunicorn/util.py", line 384, in import_app
__import__(module)
File "/var/www/html/django-project/helloapp/helloapp/wsgi.py", line 12, in <module>
from django.core.wsgi import get_wsgi_application
ImportError: No module named django.core.wsgi
[2017-05-18 22:33:37 +0000] [886] [INFO] Worker exiting (pid: 886)
[2017-05-18 22:33:37 +0000] [882] [INFO] Shutting down: Master
[2017-05-18 22:33:37 +0000] [882] [INFO] Reason: Worker failed to boot.
有问题:
Process.Start()
答案 0 :(得分:1)
您能否确认已安装Django
?
sudo pip install django --upgrade
要使用virtualenv,请先安装
pip install virtualenv
创建一个新的env(不应该在Django项目中)
virtualenv my_env
在此文件夹中,您可以激活env
. bin/activate
一旦env处于活动状态,就安装django
pip install django
然后返回django项目并运行
python manage.py runserver
应该有效
答案 1 :(得分:1)
是的,您必须在生产服务器上安装django。 我个人使用虚拟环境来试试这个问题,试试
sudo apt-get install python-virtualenv
virtualenv env_name
source env_name/bin/activate
完成后,您应该会在pwd前面看到您的环境名称。这将允许您仅在该环境中安装python包。但是,当然,您还必须在生产服务器中使用它......
答案 2 :(得分:0)
我是否必须在生产服务器中安装python-django
是的,必须以与在开发服务器上安装相同的方式在生产服务器上安装django