【问题标题】:Why is this code failing in a 32-bit enviroment?为什么这段代码在 32 位环境中会失败?
【发布时间】:2019-08-17 04:45:20
【问题描述】:

我正在将一个非常简单的 django 应用程序从我的台式机移动到 virtualbox 服务器。 我已经复制了孔项目,除了 virtualenv 源文件夹。 然后,我创建了一个 virtualenv 并以相同的方式安装了依赖项。当我运行 manage.py 时出现循环引用错误 The included URLconf 'pmkwebPdf.urls' does not appear to have any patterns in it

这是项目目录:

PmkwebPdf
    media
    pmkwebPdf
        __init.py
        settings.py
        urls.py
        wsgi.py
    src
        migrations
            ...
        processor
            ...
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        urls.py
        views.py
    templates
        ...
    venv
        ...
    db.sqlite3
    manage.py

这肯定是 urlpatterns 的错误。 所以我这样做了。

pmkWebPdf.urls

from django.contrib import admin
#from django.urls import path, include

urlpatterns = [
    #path('', include('src.urls')),
    path('admin/', admin.site.urls),
]

在此文件中,如果我删除 path('', include('src.urls')), 及其依赖项错误消失了

src/urls.py

from django.conf.urls.static import static
from django.urls import path

from pmkwebPdf import settings
#from src.views import index

urlpatterns = [
    #path('', index, name='index')
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

离开 pmkWebPdf.urls 后没有注释行,我发现,在这个文件中,如果我将 urlpatters 留空并删除 from src.views import index 行。服务器运行。

我在我的台式电脑和我的虚拟机中创建了相同的项目遵循相同的过程结果不同

环境之间存在差异 虚拟机必须在32位上运行。所以不同之处在于它运行 python 3.5.2 vs 3.6.8(我的桌面 64 位 pc 中的 python 版本)。 但是,venv 依赖是完全一样的。

这是错误的回溯

Traceback (most recent call last):
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/urls/resolvers.py", line 581, in url_patterns
    iter(patterns)
TypeError: 'module' object is not iterable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.5/threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/utils/autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 117, in inner_run
    self.check(display_num_errors=True)
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/core/management/base.py", line 390, in check
    include_deployment_checks=include_deployment_checks,
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/core/management/base.py", line 377, in _run_checks
    return checks.run_checks(**kwargs)
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/core/checks/registry.py", line 72, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/core/checks/urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/core/checks/urls.py", line 23, in check_resolver
    return check_method()
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/urls/resolvers.py", line 398, in check
    for pattern in self.url_patterns:
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/utils/functional.py", line 80, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home/hernan/pmk/pmkwebPdf/venv/lib/python3.5/site-packages/django/urls/resolvers.py", line 588, in url_patterns
    raise ImproperlyConfigured(msg.format(name=self.urlconf_name))
django.core.exceptions.ImproperlyConfigured: The included URLconf 'pmkwebPdf.urls' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.

关于可能导致此问题或为什么会发生的任何想法?

【问题讨论】:

  • 您是否将文件命名为 urlpatterns.py,或将文件夹命名为 urlpatterns?如果你这样做了,请选择一个不同的名称。
  • 另外,您检查过循环导入的代码吗?我们当然没有足够的信息从这里检查它。
  • 没有名为 urlpatterns 的文件夹。但是,如果它是循环导入,为什么我会在第一个环境中而不是在第二个环境中得到这个错误?这是相同的代码

标签: python django python-3.6 circular-reference


【解决方案1】:

问题出在控制字符上。

第一个环境得到CR,第二个得到LF

更多关于这两者的含义和区别的信息可以在this answer找到。

【讨论】:

    猜你喜欢
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多