2016-08-30 142 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 –

相關問題