我正在使用旧版django创建的django项目。我的环境设置为最新的django版本(1.11.4)。
当我尝试python manage.py runserver
时,我明白了:
Traceback启动的线程中的未处理异常(最近一次调用最后一次):文件
“的/ usr /本地/ LIB / python2.7 / DIST-包/ django的/ utils的/ autoreload.py”, 第228行,在包装器中
fn(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py",
第117行,在inner_run中
autoreload.raise_last_exception() File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py",
第251行,在raise_last_exception
中six.reraise(*_exception) File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py",
第228行,在包装器中
fn(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 27,
在设置
中apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line
108,填充
app_config.import_models() File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line
202,在import_models中
self.models_module = import_module(models_module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File
“/家/ ahmedn1 /文档/ Paymob / wallet_executive_panel-主c109bd6fe9cd1bf793c11a5c2e97d18a1887c3ba /账户/ models.py”, 第8行,
import timedelta File "/usr/local/lib/python2.7/dist-packages/timedelta/__init__.py", line
11,在
from .fields import TimedeltaField File "/usr/local/lib/python2.7/dist-packages/timedelta/fields.py", line 18,
in
class TimedeltaField(six.with_metaclass(models.SubfieldBase, models.Field)): AttributeError: 'module' object has no attribute
'SubfieldBase'
所以,似乎问题在于django-timedeltafield包。我有该软件包的最新版本(0.7.10)。所以,我不明白为什么它仍然存在已弃用的SubfieldBase的问题。
我有什么想法可以解决这个问题?
答案 0 :(得分:2)
django-timedelta-field包不适用于Django 1.10+。来自django-timedelta-field回购:
如果您使用的是Django 1.8或更高版本(而且 应该),那么您应该使用包含的
DurationField()
代替此。此字段不适用于Django 1.10,可能无法更新以解决问题。
以下是对1.8 release notes中SubFieldBase
弃用的解释。
答案 1 :(得分:0)
当Django版本由于安装软件包而升级时,会发生此问题。 您可能需要运行'pip install -r requirements.txt',它将安装与您现有项目兼容的Django版本。
因此,请尝试,点安装-r requirements.txt
让我知道它是否也对您有用。