2016-08-30 138 views
1

我试图在bash控制台中使用collectstatic让pythonanywhere上的django应用程序运行我的CSS。ImportError:无法导入名称时区pythonanywhere

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

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 $ 

这里是时区进口

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 
+0

你的pythonanywhere服务器上有哪个版本的Django?您可能需要更新django – elethan

回答

1

如果我没有记错的话,pythonanywhere默认使用的Django 1.3.7的.py。它看起来像没有添加Django的时区支持,直到1.4版本:

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

您应该更新的Django的最新版本(或者至少是较早版本),一切都应该按预期工作(至少与时区)。您可以通过从控制台上的pythonanywhere形状的开口一个bash控制台选项卡,并运行命令升级:

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

$ pip install django 

编辑:

$ pip install --upgrade django 

或者在virtualenv安装更新的版本

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

+1

PythonAnywhere dev这里:您可以使用pip从bash控制台升级软件包,但需要使用“--user”标志。更多在这里:https://help.pythonanywhere.com/pages/InstallingNewModules。但是,对于Django来说,这并不是很好(基本上,你仍然可以看到一些旧版本“通过”新版本),所以我们推荐使用virtualenvs。有一个在这里使用一个分步指南:https://help.pythonanywhere.com/pages/Virtualenvs –

相关问题