Comments you submit will be routed for moderation. If you have an account, please log in first.
Modify

Ticket #581 (closed defect: wontfix)

Opened 10 months ago

Last modified 4 months ago

django-import-finder + django1.3.1

Reported by: anonymous Owned by: htgoebel
Priority: normal Milestone: PyInstaller 2.1
Component: Hooks Version: develop
Severity: normal Keywords:
Cc:

Description

pyinstaller rev: c6d550c Error: failure to obtain hidden-imports.

'''original code:'''

def find_url_callbacks(urls_module):
    urlpatterns = urls_module.urlpatterns # N1: list object don´t has attribut urlpatterns
    hid_list = [urls_module.__name__]
    for pattern in urlpatterns:
        if isinstance(pattern, RegexURLPattern):
            hid_list.append(pattern.callback.__module__)
        elif isinstance(pattern, RegexURLResolver):
            hid_list += find_url_callbacks(pattern.urlconf_module) # N1: urlconf_module is list, no module.
    return hid_list

'''sugest code:'''

hid_list = [] # update with append

def find_url_callbacks(urls_module):
    try: # just try
        urlpatterns = urls_module.urlpatterns
        module_name = urls_module.__name__
        
        if not module_name in hid_list: # without duplication!
            hid_list.append( module_name )

    except: # take the list
        urlpatterns = urls_module
        
    for pattern in urlpatterns:
        if isinstance(pattern, RegexURLPattern):
            callback = pattern.callback.__module__
            
            if not callback in hid_list: # without duplication!
                hid_list.append( callback )
                
        elif isinstance(pattern, RegexURLResolver):
            find_url_callbacks( pattern.urlconf_module )
    return hid_list

# ---------- IMPORTANT! ----------
hiddenimports += find_url_callbacks(urls)
print hiddenimports # output to sys.stdout
##########################################

# In hookutils.py
'''output list code: '''

def django_dottedstring_imports(django_root_dir):
    django_root_dir = django_root_dir[-1]
    package_name = os.path.basename( django_root_dir )
    compat.setenv("DJANGO_SETTINGS_MODULE", "%s.settings" % package_name)
    
    # takes the 'print' in 'sys.stdout', output list object.
    hiddenimports = eval_script("django-import-finder.py")
    return hiddenimports

# In hook-django.py

'''original code: '''
hiddenimports = [django_dottedstring_imports(root_dir)
                 for root_dir in django_root_dirs]

''''sugest code: '''

hiddenimports = []
for root_dir in django_root_dirs:
    dtt_imports = django_dottedstring_imports(root_dir) # now is list object
    
    if type(dtt_imports) is list:
        hiddenimports.extend(dtt_imports) # append the list

    else:
        hiddenimports.append( dtt_imports )
print "HOOK-DJANGO-HIDDEN_IMPORTS: ", hiddenimports

Attachments

Change History

comment:1 Changed 9 months ago by matysek

  • Milestone set to PyInstaller 2.1

comment:2 Changed 4 months ago by matysek

  • Status changed from new to closed
  • Resolution set to wontfix

Our focus with django import hook is on version 1.4. Could you please try that version or test if 1.3 will work with current dev version?

View

Add a comment

Modify Ticket

Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.