ImportError:无法导入名称timezone pythonanywhere

时间:2016-08-30 23:57:56

标签: python css django importerror pythonanywhere

我试图在bash控制台中使用collectstatic来让我的CSS在pythonanywhere上的django应用程序上运行。

不幸的是,我收到了一个错误:

23:49 ~/mysite/mysite $ python manage.py collectstatic                                                                                                                                                            
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 429, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, 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 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 219, in execute
    self.validate()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/validation.py", line 35, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 146, in get_app_errors
    self._populate()
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 64, in _populate
    self.load_app(app_name)
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 78, in load_app
    models = import_module('.models', app_name)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/home/nikk2009/mysite/mysite/polls/models.py", line 4, in <module>
    from django.utils import timezone
ImportError: cannot import name timezone
23:49 ~/mysite/mysite $ 

以下是导入时区的.py

import datetime

from django.db import models
from django.utils import timezone

# Create your models here.

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text

    def was_published_recently(self):
        now = timezone.now()
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)<= now
        was_published_recently.admin_order_field = 'pub_date'
        was_published_recently.boolean = True
        was_published_recently.short_description = 'Published recently?'

class Choice(models.Model):
    choice_text = models.CharField(max_length= 200)
    votes = models.IntegerField(default= 0)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)

    def __str__(self):
        return self.choice_text

1 个答案:

答案 0 :(得分:1)

如果我没弄错的话,pythonanywhere默认使用Django 1.3.7。看起来直到版本1.4才添加Django时区支持:

https://docs.djangoproject.com/en/1.10/releases/1.4/#what-s-new-in-django-1-4

您应该将Django更新到最新版本(或者至少是早期版本),并且所有内容都应该按预期工作(至少使用时区)。您可以通过在pythonanywhere配置文件的控制台选项卡中打开bash控制台并运行命令来进行升级:

$ pip install --upgrade django

或在virtualenv中安装较新版本:

$ mkvirtualenv myenv --python=/usr/bin/python3.4

$ pip install django

编辑:

我测试了我的第一个建议,并且无法让它在我的pythonanywhere帐户上运行(我认为它与pythonanywhere为其用户提供的权限有关)。但是,使用第二种方法(即使用virtualenv)确实安装了最新版本的Django,其中包括django.utils.timezone中的时区支持。