def django_dottedstring_imports(django_root_dir): """ Get all the necessary Django modules specified in settings.py. In the settings.py the modules are specified in several variables as strings. """ pths = [] # Extend PYTHONPATH with parent dir of django_root_dir. pths.append(misc.get_path_to_toplevel_modules(django_root_dir)) # Extend PYTHONPATH with django_root_dir. # Often, Django users do not specify absolute imports in the settings # module. pths.append(django_root_dir) default_settings_module = os.path.basename(django_root_dir) + '.settings' settings_module = os.environ.get('DJANGO_SETTINGS_MODULE', default_settings_module) env = { 'DJANGO_SETTINGS_MODULE': settings_module, 'PYTHONPATH': os.pathsep.join(pths) } ret = eval_script('django_import_finder.py', env=env) return ret
def _extend_pathex(self, spec_pathex, scripts): """ Normalize additional paths where PyInstaller will look for modules and add paths with scripts to the list of paths. :param spec_pathex: Additional paths defined defined in .spec file. :param scripts: Scripts to create executable from. :return: list of updated paths """ # Based on main supplied script - add top-level modules directory to PYTHONPATH. # Sometimes the main app script is not top-level module but submodule like 'mymodule.mainscript.py'. # In that case PyInstaller will not be able find modules in the directory containing 'mymodule'. # Add this directory to PYTHONPATH so PyInstaller could find it. pathex = [] # Add scripts paths first. for script in scripts: logger.debug('script: %s' % script) script_toplevel_dir = get_path_to_toplevel_modules(script) if script_toplevel_dir: pathex.append(script_toplevel_dir) # Append paths from .spec. if spec_pathex is not None: pathex.extend(spec_pathex) # Normalize paths in pathex and make them absolute. return [absnormpath(p) for p in pathex]
def django_dottedstring_imports(django_root_dir): """ Get all the necessary Django modules specified in settings.py. In the settings.py the modules are specified in several variables as strings. """ package_name = os.path.basename(django_root_dir) compat.setenv('DJANGO_SETTINGS_MODULE', '%s.settings' % package_name) # Extend PYTHONPATH with parent dir of django_root_dir. PyInstaller.__pathex__.append(misc.get_path_to_toplevel_modules(django_root_dir)) # Extend PYTHONPATH with django_root_dir. # Many times Django users do not specify absolute imports in the settings module. PyInstaller.__pathex__.append(django_root_dir) ret = eval_script('django-import-finder.py') # Unset environment variables again. compat.unsetenv('DJANGO_SETTINGS_MODULE') return ret