list python package dependencies without loading them?

后端 未结 3 1524
天涯浪人
天涯浪人 2020-11-28 09:45

Say that python package A requires B, C and D; is there a way to list A → B C D without loading them ?
Requires in the metadata (yolk -M A

相关标签:
3条回答
  • 2020-11-28 09:50

    If by package you mean a pip installed package (and not a directory with an __init__.py), then you can use the Python package called pip. For example:

    def get_all_package_dependencies():
        """Return dictionary of installed packages to list of package dependencies."""
        return {
            dist.key: [r.key for r in dist.requires()]
            for dist in pip.get_installed_distributions()
        }
    
    0 讨论(0)
  • 2020-11-28 09:54

    Snakefood

    sfood -fuq package.py | sfood-target-files 
    

    will list the dependencies.

    `-f` tells sfood to follow dependencies recursively
    `-u` tells sfood to ignore unused imports
    `-q` tells sfood to be quiet about debugging information
    

    To filter out modules from the standard library, you could use

    sfood -fuq package.py | sfood-filter-stdlib | sfood-target-files 
    

    As you've already noted, if there are other directories you'd like ignored, you can also use the sfood -I flag.

    0 讨论(0)
  • 2020-11-28 10:02

    modulefinder from the standard lib

    New in version 2.3.

    This module provides a ModuleFinder class that can be used to determine the set of modules imported by a script. modulefinder.py can also be run as a script, giving the filename of a Python script as its argument, after which a report of the imported modules will be printed.

    I am not sure if it complies with your requierement about not loading the modules. From here:

    modulefinder use bytecode inspection to find dependencies, and therefore is free from any side-effects that may be caused by importing the modules being studied.

    Other hints about the use of pylint or Gui2exe here

    0 讨论(0)
提交回复
热议问题