1

使用 Ubuntu 12.04 无头服务器
Python v2.7.3
Django v1.3.1 FINAL

Python 是预装的,我从 apt-get python-django 安装了 django

我会注意到我已经设置并配置了 2 台服务器以供开发使用。既是为了练习,也是因为我经常出差,并且有一个方便的虚拟机总是很好的。但是,这台特殊的机器给我带来了麻烦,我无法理解原因。

我以前的设置非常简单。安装 ubuntu,安装 python-django,将文件复制到服务器,检查权限,运行 python manage.py syncdb,然后运行 ​​python.manage.py runserver 0.0.0.0:8080,一切正常。由于某种原因,这在此服务器上不起作用。我完全迷失了,因为我没有改变任何东西,而且我相当确定我没有做任何不同的事情。

任何帮助表示赞赏,我提前致谢

   $python manage.py shell
   ...
   >>>import pwht.models
   >>>k = Device(serial="something", mac="something", ip="10.211.119.50", active = True)
   Traceback (most recent call last):
   File "<console>", line 1, in <module>
   NameError: name 'Device' is not defined

我的路径在 manage.py 下的 sys.path

charles@Jobserver-Gibby:~/pwht/pwht$ python manage.py shell
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import sys
>>> print sys.path
['/home/charles/pwht/pwht', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/u
sr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
>>> 

为了完整起见

charles@Jobserver-Gibby:~/pwht/pwht$ python manage.py shell
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from pwht.models import Device
>>>

import django 也可以正常工作,尽管我没有在这里列出。

这是我忘记提及的硬币的另一面:

charles@Jobserver-Gibby:~/pwht/pwht$ python manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): no
Installing custom SQL ...
Installing indexes ...
No fixtures found.
charles@Jobserver-Gibby:~/pwht/pwht$ 

我的模型中的表都没有创建。在 Mysql 中也是如此。

这是我在项目中的文件

管理.py

   #!/usr/bin/env python
   from django.core.management import execute_manager
   import imp
   try:
       imp.find_module('settings') # Assumed to be in the same directory.
   except ImportError:
       import sys
       sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
       sys.exit(1)

   import settings

   if __name__ == "__main__":
       execute_manager(settings)

设置.py

   # Django settings for pwht project.

   DEBUG = True
   TEMPLATE_DEBUG = DEBUG

   ADMINS = (
       # ('Your Name', 'your_email@example.com'),
   )

   MANAGERS = ADMINS

   DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.sqlite3',
           'NAME': '/home/charles/pwht/pwht/mydb.sql',                      
           'USER': '',                      
           'PASSWORD': '',                  
           'HOST': '',                      
           'PORT': '',                      
       }
   }

   TIME_ZONE = 'America/New_York'

   LANGUAGE_CODE = 'en-us'

   SITE_ID = 1

   USE_I18N = True

   USE_L10N = True

   MEDIA_ROOT = '/home/charles/pwht/pwht/media/'

   MEDIA_URL = '/media/'

   STATIC_ROOT = '/home/charles/pwht/pwht/static/'

   STATIC_URL = '/static/'

   ADMIN_MEDIA_PREFIX = '/static/admin/'

   STATICFILES_DIRS = (
       '/home/charles/pwht/pwht/statics',
   )

   STATICFILES_FINDERS = (
       'django.contrib.staticfiles.finders.FileSystemFinder',
       'django.contrib.staticfiles.finders.AppDirectoriesFinder',
   )


   SECRET_KEY = [purposely removed]

   TEMPLATE_LOADERS = (
       'django.template.loaders.filesystem.Loader',
       'django.template.loaders.app_directories.Loader',
   )

   MIDDLEWARE_CLASSES = (
       'django.middleware.common.CommonMiddleware',
       'django.contrib.sessions.middleware.SessionMiddleware',
       'django.middleware.csrf.CsrfViewMiddleware',
       'django.contrib.auth.middleware.AuthenticationMiddleware',
       'django.contrib.messages.middleware.MessageMiddleware',
   )

   ROOT_URLCONF = 'pwht.urls'

   TEMPLATE_DIRS = (
       '/home/charles/pwht/pwht/templates/',
   )

   INSTALLED_APPS = (
       'django.contrib.auth',
       'django.contrib.contenttypes',
       'django.contrib.sessions',
       'django.contrib.sites',
       'django.contrib.messages',
       'django.contrib.staticfiles',
   )

   LOGGING = {
       'version': 1,
       'disable_existing_loggers': False,
       'handlers': {
           'mail_admins': {
               'level': 'ERROR',
               'class': 'django.utils.log.AdminEmailHandler'
           }
       },
       'loggers': {
           'django.request': {
               'handlers': ['mail_admins'],
               'level': 'ERROR',
               'propagate': True,
           },
       }
   }

模型.py

'''
Created on Aug 18, 2012

@author: Charles B. Gibby
'''
from django.db import models

class Device (models.Model):
    serial = models.CharField(max_length=30)
    mac = models.CharField(max_length=17)
    ip = models.IPAddressField()
    active = models.BooleanField()

    def __unicode__(self):
        return self.serial

class Console (models.Model):
    device = models.ForeignKey(Device)
    serial = models.CharField(max_length=30)
    address = models.CharField(max_length=2)
    active = models.BooleanField()

    def __unicode__(self):
        return self.serial

    class Meta:
        ordering = ['device', 'address']

class Current_zones (models.Model):
    console = models.ForeignKey(Console)
    zone = models.IntegerField()
    temp = models.IntegerField(null=True)
    when_temp = models.DateTimeField(blank=True, auto_now=False)
    output = models.IntegerField(null=True)
    when_output = models.DateTimeField(blank=True, auto_now=False)
    man_sp = models.IntegerField(null=True)
    when_man_sp = models.DateTimeField(blank=True, auto_now=False)
    trim = models.IntegerField(null=True)
    when_trim = models.DateTimeField(blank=True, auto_now=False)
    clamp = models.IntegerField(null=True)
    when_clamp = models.DateTimeField(blank=True, auto_now=False)
    auto_sp = models.IntegerField(null=True)
    when_auto_sp = models.DateTimeField(blank=True, auto_now=False)
    sp_type = models.IntegerField(null=True)
    when_sp_type = models.DateTimeField(blank=True, auto_now=False)

    def __unicode__(self):
        return u'%s-%s' % (self.console, self.zone)

    class Meta:
        ordering = ['console', 'zone']

class Message (models.Model):
    console = models.ForeignKey(Console)
    req_type = models.BooleanField() # 0 for Read and 1 for Write
    parameter = models.CharField(max_length=1)
    target = models.CharField(max_length=2)
    data = models.CharField(max_length=4)
    when_message = models.DateTimeField(blank=True, auto_now=False)
    tx = models.BooleanField()
    when_tx = models.DateTimeField(blank=True, auto_now=False)
    status = models.BooleanField()
    when_status = models.DateTimeField(blank=True, auto_now=False)

    def __unicode__(self):
        return u'%s-%s' % (self.console, self.parameter)

    class Meta:
        ordering = ['console', 'when_message']

class Recorded_zones (models.Model):
    console = models.ForeignKey(Console)
    zone = models.IntegerField()
    temp = models.IntegerField(null=True)
    when_temp = models.DateTimeField(blank=True, auto_now=False)
    output = models.IntegerField(null=True)
    when_output = models.DateTimeField(blank=True, auto_now=False)
    man_sp = models.IntegerField(null=True)
    when_man_sp = models.DateTimeField(blank=True, auto_now=False)
    trim = models.IntegerField(null=True)
    when_trim = models.DateTimeField(blank=True, auto_now=False)
    clamp = models.IntegerField(null=True)
    when_clamp = models.DateTimeField(blank=True, auto_now=False)
    auto_sp = models.IntegerField(null=True)
    when_auto_sp = models.DateTimeField(blank=True, auto_now=False)
    sp_type = models.IntegerField(null=True)
    when_sp_type = models.DateTimeField(blank=True, auto_now=False)

    def __unicode__(self):
        return u'%s-%s' % (self.console, self.zone)

    class Meta:
        ordering = ['console', 'zone', 'when_temp']

class Profiler (models.Model):
    console = models.ForeignKey(Console)
    climb = models.IntegerField()
    soak = models.IntegerField()
    hold = models.IntegerField()
    down = models.IntegerField()
    end = models.IntegerField()
    duration = models.IntegerField()
    when_duration = models.DateTimeField(blank=True, auto_now=False)

    def __unicode__(self):
        return self.console

    class Meta:
        ordering = ['console']    
4

1 回答 1

5

第一个片段中的第 3 行;代替

import pwht.models

你试过了吗:

from pwht.models import Device

UPDATE: the pwht app is NOT included within your settings.py INSTALLED_APPS. Therefore add pwht within your INSTALLED_APPS.

于 2012-09-03T15:44:01.593 回答