【问题标题】:Problem with migrating a django server (syntax error)迁移 django 服务器的问题(语法错误)
【发布时间】:2020-12-14 12:50:39
【问题描述】:

我正在尝试为我们大学的项目制作一个用于社会计量徽章 (https://github.com/HumanDynamics/openbadge-server) 的 django 服务器。代码(和整个徽章)是由其他人完成的,我自己没有改变任何东西,我只是想让它工作。我能够构建服务器,但在尝试迁移或创建超级用户时,出现语法错误。我一直在尝试自己解决它,但我对 python、django 和 Ubuntu 的了解非常有限,所以我可能遗漏了一些东西。

该错误意味着 /usr/local/lib/python2.7/site-packages/pkgconf/init.py 的第 44 行有错误,但我找不到该文件,因此无法检查它。事实上,整个 site-packages 文件夹是空的,所以我想知道我是否以错误的方式安装了模块?代码是用 python2.7 编写的(我无法更改,因为它不是我的代码)所以我也想知道 python2.7 是 EOL 是否会导致问题?它已经打破了一些部分,主要是如何获取一些依赖关系。 本项目使用的代码和docker文件可以在这里找到:https://github.com/HumanDynamics/openbadge-server

依赖版本应该没问题,Django版本应该兼容Python2.7,其他模块也一样。我尝试过更改版本,但无济于事。下面是需求文本

Django==1.8.4
Fabric==1.10.2
django-grappelli==2.7.1
simplejson==3.8.0
MarkupSafe==0.23
django-pipeline==1.5.4
djangorestframework==3.2.3
djangorestframework-expiring-authtoken==0.1.1
pytz==2015.7
python-dateutil==2.5.3
jsonfield==1.0.3
django-controlcenter===0.2.6

# Configuration
django-environ==0.4.1
# Python-PostgreSQL Database Adapter
psycopg2==2.7.3.2
# Unicode slugification
awesome-slugify==1.6.5 
# Import and export using the admin tool
# Using tablib 0.12.1. Newer versions break the import-export add-on
tablib==0.12.1
django-import-export==1.0.0

coverage==4.3.1
django-coverage-plugin==1.3.1
Sphinx==1.5.1
django-extensions==1.7.5
Werkzeug==0.11.15
django-test-plus==1.0.16
factory-boy==2.8.1

django-debug-toolbar==1.6
# improved REPL
ipdb==0.10.1
pytest-django==3.1.2
pytest-sugar==0.8.0

这是错误。根据我有限的知识,我认为它没有从 /usr/local/lib/python2.7/site-packages/ 中找到文件,但它是完全空的,依赖项要么安装在本地,要么安装到 dist-packages .前面有人说是python3的问题,但应该不是python3的问题。如果构建以某种方式安装了错误的东西,是否也可能是 docker 版本问题?

Starting openbadge-server_postgres_1 ... done

Postgres is up - continuing...

Traceback (most recent call last):

  File "manage.py", line 23, in <module>

    execute_from_command_line(sys.argv)

  File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line

    utility.execute()

  File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute

    django.setup()

  File "/usr/local/lib/python2.7/site-packages/django/__init__.py", line 18, in setup

    apps.populate(settings.INSTALLED_APPS)

  File "/usr/local/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate

    app_config = AppConfig.create(entry)

  File "/usr/local/lib/python2.7/site-packages/django/apps/config.py", line 86, in create

    module = import_module(entry)

  File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in import_module

    __import__(name)

  File "/usr/local/lib/python2.7/site-packages/controlcenter/__init__.py", line 1, in <module>

    from .dashboards import Dashboard  # NOQA

  File "/usr/local/lib/python2.7/site-packages/controlcenter/dashboards.py", line 10, in <module>

    from . import app_settings

  File "/usr/local/lib/python2.7/site-packages/controlcenter/app_settings.py", line 1, in <module>

    from pkgconf import Conf

  File "/usr/local/lib/python2.7/site-packages/pkgconf/__init__.py", line 44

    class Conf(metaclass=ConfMeta):

                        ^

SyntaxError: invalid syntax

我将尽我所能提供信息。

【问题讨论】:

    标签: django python-2.7 docker ubuntu


    【解决方案1】:

    通过将 django-pkgconf==0.3.0 添加到要求来解决问题。虽然需求根本没有包,但它仍然通过其他包安装(和使用),并且安装了不支持 Python 2.7 的 0.4.0 版本。

    奇怪的是,如果我在没有要求的情况下安装它,我找不到安装它的跟踪,所以即使我手动安装 0.3.0,它仍然会使用 0.4.0(尽管似乎没有安装它) 所以为了让它工作,它必须通过 docker build 安装。

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 2013-10-30
      • 2021-11-20
      • 2011-10-26
      • 1970-01-01
      相关资源
      最近更新 更多