Skip to content

DJango branch: circular import problem: crontab and logging #372

@terxw

Description

@terxw

Describe the bug

After updating to newest django branch I no longer can launch app

Steps to reproduce

1. Run ArchiveBox e.g. ./bin/archivebox add

Screenshots or log output

Traceback (most recent call last):                                                                                                                                                                                                            
  File "/home/kangus/src/ArchiveBox/bin/archivebox", line 7, in <module>                                                                                                                                                                      
    from .cli import main                                                                                                                                                                                                                     
  File "/home/kangus/src/ArchiveBox/archivebox/cli/__init__.py", line 65, in <module>                                                                                                                                                         
    SUBCOMMANDS = list_subcommands()                                                                                                                                                                                                          
  File "/home/kangus/src/ArchiveBox/archivebox/cli/__init__.py", line 41, in list_subcommands                                                                                                                                                 
    module = import_module('.archivebox_{}'.format(subcommand), __package__)                                                                                                                                                                  
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module                                                                                                                                                                 
    return _bootstrap._gcd_import(name[level:], package, level)                                                                                                                                                                               
  File "/home/kangus/src/ArchiveBox/archivebox/cli/archivebox_init.py", line 11, in <module>                                                                                                                                                  
    from ..main import init, docstring                                                                                                                                                                                                        
  File "/home/kangus/src/ArchiveBox/archivebox/main.py", line 8, in <module>                                                                                                                                                                  
    from crontab import CronTab, CronSlices                                                                                                                                                                                                   
  File "/usr/local/lib/python3.8/dist-packages/crontab.py", line 91, in <module>                                                                                                                                                              
    import logging                                                                                                                                                                                                                            
  File "/home/kangus/src/ArchiveBox/archivebox/logging.py", line 16, in <module>                                                                                                                                                              
    from .index.schema import Link, ArchiveResult                                                                                                                                                                                             
  File "/home/kangus/src/ArchiveBox/archivebox/index/__init__.py", line 13, in <module>                                                                                                                                                       
    from ..system import atomic_write                                                                                                                                                                                                         
  File "/home/kangus/src/ArchiveBox/archivebox/system.py", line 12, in <module>                                                                                                                                                               
    from crontab import CronTab                                                                                                                                                                                                               
ImportError: cannot import name 'CronTab' from partially initialized module 'crontab' (most likely due to a circular import) (/usr/local/lib/python3.8/dist-packages/crontab.py)                                                              
Error in sys.excepthook: 
Traceback (most recent call last):                                                                                                                                                                                                    [0/6631]
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 32, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 12, in <module>
    import os, glob, subprocess, os.path, time, pwd, sys, requests_unixsocket
  File "/usr/lib/python3/dist-packages/requests_unixsocket/__init__.py", line 1, in <module>
    import requests
  File "/usr/lib/python3/dist-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/usr/lib/python3/dist-packages/urllib3/__init__.py", line 7, in <module>
    from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 3, in <module>
    import logging
  File "/home/kangus/src/ArchiveBox/archivebox/logging.py", line 16, in <module>
    from .index.schema import Link, ArchiveResult
  File "/home/kangus/src/ArchiveBox/archivebox/index/__init__.py", line 13, in <module>
    from ..system import atomic_write
  File "/home/kangus/src/ArchiveBox/archivebox/system.py", line 12, in <module>
    from crontab import CronTab
  File "/usr/local/lib/python3.8/dist-packages/crontab.py", line 154, in <module>
    LOG = logging.getLogger('crontab')
AttributeError: partially initialized module 'logging' has no attribute 'getLogger' (most likely due to a circular import)

Original exception was:
Traceback (most recent call last):
  File "/home/kangus/src/ArchiveBox/bin/archivebox", line 7, in <module>
    from .cli import main
  File "/home/kangus/src/ArchiveBox/archivebox/cli/__init__.py", line 65, in <module>
    SUBCOMMANDS = list_subcommands()
  File "/home/kangus/src/ArchiveBox/archivebox/cli/__init__.py", line 41, in list_subcommands
    module = import_module('.archivebox_{}'.format(subcommand), __package__)
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/home/kangus/src/ArchiveBox/archivebox/cli/archivebox_init.py", line 11, in <module>
    from ..main import init, docstring
  File "/home/kangus/src/ArchiveBox/archivebox/main.py", line 8, in <module>
    from crontab import CronTab, CronSlices
  File "/usr/local/lib/python3.8/dist-packages/crontab.py", line 91, in <module>
    import logging
  File "/home/kangus/src/ArchiveBox/archivebox/logging.py", line 16, in <module>
    from .index.schema import Link, ArchiveResult
  File "/home/kangus/src/ArchiveBox/archivebox/index/__init__.py", line 13, in <module>
    from ..system import atomic_write
  File "/home/kangus/src/ArchiveBox/archivebox/system.py", line 12, in <module>
    from crontab import CronTab
ImportError: cannot import name 'CronTab' from partially initialized module 'crontab' (most likely due to a circular import) (/usr/local/lib/python3.8/dist-packages/crontab.py)

Software versions

  • OS: Linux Mint 20/ubuntu 20.04
  • ArchiveBox version: 848977e
  • Python version: python 3.8.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions