Modify ↓
Ticket #581 (closed defect: wontfix)
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
Note: See
TracTickets for help on using
tickets.
