# Python Modulefinder Module

The `modulefinder` 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.

## Importing the Module

```python
import modulefinder
```

## Basic Usage

To use `modulefinder` programmatically, you instantiate the `ModuleFinder` class and run a script against it.

```python
from modulefinder import ModuleFinder
import os

# Create a dummy script for demonstration
script_name = "myscript.py"
with open(script_name, "w") as f:
    f.write("import os\nimport sys\nimport math\n")

finder = ModuleFinder()
finder.run_script(script_name)

print('Loaded modules:')
for name, mod in finder.modules.items():
    print(f"{name}: {mod}")

print('-'*20)
print('Modules not imported:')
print('\n'.join(finder.badmodules.keys()))

# Clean up
os.remove(script_name)
```

## The `ModuleFinder` Class

### `run_script(pathname)`

Analyzes the contents of the file at `pathname`.

### Attributes

*   `modules`: A dictionary mapping module names to modules.
*   `badmodules`: A dictionary mapping names of modules that could not be found to the names of the modules that imported them.

## Command Line Usage

You can also use `modulefinder` from the command line.

```bash
python -m modulefinder myscript.py
```

[[programming/python/python]]