django 模块是全局的吗 - ImportError: 没有名为 django.core.management 的模



我对django的工作方式感到非常困惑。我遵循了一些指南并测试了一个示例应用程序,并让它在我的本地开发计算机上运行。效果很好。但是,当我将此示例应用移动到生产服务器时,出现此错误:

# cd /var/www/html/helloapp
# python manage.py runserver
Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management

因此,在设置示例应用期间,我执行以下操作:

$ sudo apt-get install python-django

然后:

$ django-admin startproject helloapp

然后:

$ cd /var/www/html/django-project/helloapp/

然后:

$ python manage.py runserver

结果:

成功了!恭喜你的第一个 Django 驱动的页面。

因此,我将文件 helloapp/传输到我的生产服务器中:

# cd /var/www/html/helloapp
# python manage.py runserver

然后是错误:

没有名为 django.core.management 的模块

我是否必须在生产服务器中安装python-django-"全局">作为生产服务器中的系统软件之一?

django.core.management到底是为了什么?我可能需要很多这样的模块来运行我的应用程序。那么这些模块是来自django的"全局"吗?

如果我的系统坏了,或者有一天我删除了python-django,我所有的django应用程序也会坏吗?

编辑:

我让它使用虚拟环境运行,但它似乎gunicorn有问题:

$ 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.

是的,你必须在生产服务器上安装 django。 我个人使用虚拟环境来解决这个问题,请尝试

sudo apt-get install python-virtualenv
virtualenv env_name
source env_name/bin/activate

完成此操作后,您应该会在 pwd 前面看到您的环境名称。这将允许您仅在该环境中安装 python 包。但是,当然,您还必须在生产服务器中使用它......

你能确认你已经安装了Django吗?

sudo pip install django --upgrade 

要使用 virtualenv,请先安装它

pip install virtualenv

创建一个新的环境(不应该在 Django 项目中)

virtualenv my_env

在此文件夹中,您可以激活环境

. bin/activate

一旦 env 处于活动状态,你就会安装 django

pip install django

然后回到 django 项目并运行

python manage.py runserver 

应该工作

更多信息在这里

我必须在生产服务器中安装 python-django 吗

是的,django 必须像在开发服务器上安装一样安装在生产服务器上

相关内容

  • 没有找到相关文章

最新更新