Django项目赢得';t在ubuntu上运行附加安装的应用程序

Django项目赢得';t在ubuntu上运行附加安装的应用程序,django,python-2.7,ubuntu-12.04,Django,Python 2.7,Ubuntu 12.04,我的设置 本地机器10.9.3 Django 1.6.2-本地机器 服务器Ubuntu 12.04 Django 1.6-ubuntu服务器 在将django项目部署到运行Ubunto 12.04的服务器时,我发现在我的settings.py文件的INSTALLED\u APPS部分中列出了一个额外但不存在的应用程序,这使我无法使用任何python manage.py命令 INSTALLED_APPS = ( 'django.contrib.admin', 'django.c

我的设置

  • 本地机器10.9.3
  • Django 1.6.2-本地机器
  • 服务器Ubuntu 12.04
  • Django 1.6-ubuntu服务器
在将django项目部署到运行Ubunto 12.04的服务器时,我发现在我的
settings.py
文件的
INSTALLED\u APPS
部分中列出了一个额外但不存在的应用程序,这使我无法使用任何
python manage.py
命令

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
    'survey',
    'django_countries',
)
在本例中,我以前在项目中有一个
django_countries
应用程序,后来我将其删除。然而,这从未阻止我在本地机器上使用任何
python manage.py
命令
OSX 10.9.3

但是,当我将项目上载到生产服务器时,会出现错误,例如运行
python manage.py runserver

会让我

$ python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 280, in execute
    translation.activate('en-us')
  File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/__init__.py", line 130, in activate
    return _trans.activate(language)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 188, in activate
    _active.value = translation(language)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 177, in translation
    default_translation = _fetch(settings.LANGUAGE_CODE)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py", line 159, in _fetch
    app = import_module(appname)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
ImportError: No module named django_countries
$python manage.py运行服务器
回溯(最近一次呼叫最后一次):
文件“manage.py”,第10行,在
从命令行(sys.argv)执行命令
文件“/usr/local/lib/python2.7/dist-packages/django/core/management/__-init__;.py”,第399行,从命令行执行
utility.execute()
文件“/usr/local/lib/python2.7/dist packages/django/core/management/__init__.py”,第392行,在execute中
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/usr/local/lib/python2.7/dist-packages/django/core/management/base.py”,第242行,从_argv运行
self.execute(*args,**选项._dict__;
文件“/usr/local/lib/python2.7/dist packages/django/core/management/base.py”,执行中第280行
翻译。激活('en-us')
文件“/usr/local/lib/python2.7/dist-packages/django/utils/translation/_-init__.py”,第130行,在activate中
返回_trans.activate(语言)
文件“/usr/local/lib/python2.7/dist packages/django/utils/translation/trans_real.py”,第188行,在activate中
_active.value=翻译(语言)
文件“/usr/local/lib/python2.7/dist-packages/django/utils/translation/trans_real.py”,第177行,翻译版
默认\u translation=\u fetch(settings.LANGUAGE\u代码)
文件“/usr/local/lib/python2.7/dist packages/django/utils/translation/trans_real.py”,第159行,在_fetch中
app=导入模块(appname)
文件“/usr/local/lib/python2.7/dist packages/django/utils/importlib.py”,第40行,在导入模块中
__导入(名称)
ImportError:没有名为django_的模块

当然,在
settings.py
中删除不必要的
django_countries
应用程序解决了我的问题,但我想知道:为什么这两种环境不同?是否还有其他重大差异需要我注意

这完全是意料之中的行为-
INSTALLED\u APPS
定义了您已安装的应用程序,Django尝试查找它们的模型、URL等。如果它找不到任何已安装的应用程序,您将收到此错误。将其从安装的应用程序中删除或安装


而且看起来你没有使用VirtualEnv。学习如何使用它,并将其用于每个项目,否则您很快就会发疯。)

根据我的问题:“当然,在settings.py中删除不必要的django_countries应用程序解决了我的问题,但我想知道:为什么这两个环境之间存在差异?”感谢您提供有关
virtualenv
的提示,我已经使用了一段时间,发现它非常棒。区别在于
django_国家/地区
在默认情况下没有捆绑在您的系统中,而您(或其他人)在您的一台计算机上安装了它,但在另一台计算机上没有安装。因此,尽管我几周前从项目中删除了它,但它仍然可以在我的系统中找到它,因此允许它在本地运行。但当我上传项目时,它却找不到。