# PackageManager.install
URL: https://lsd.tools/docs/api-package-manager-install
Updated: 2026-07-17

## Parameters

| name | type | default | description |
|---|---|---|---|
| `source` | `str` | — | path to a package directory, a `.zip`, or a sealed `.lsdpkg` archive |

## Example

```python
from lsdtools.advanced import PackageManager

pm = PackageManager()
pm.install("./my-pkg")            # a folder
pm.install("./mim-1.2.0.zip")     # a zip archive
```

## Notes

Dispatches on `source`: a `.lsdpkg` is verified and stored sealed, a `.zip` is extracted (the
shallowest `lsd_package.json` inside wins, so a GitHub archive with a nested package folder works),
and a directory is copied whole. In every case the package is **copied** into `~/.lsd/packages/` and
added to the installed record — use [`add_local`](/docs/api-package-manager-add-local) to register a
folder by reference instead. Returns `None` when `source` is not a directory, `.zip`, or `.lsdpkg`.

## See also

**API:** [install_url](/docs/api-package-manager-install-url) · [add_local](/docs/api-package-manager-add-local) · [remove](/docs/api-package-manager-remove)

**Guides:** [Install from the store](/docs/pkg-store-install) · [The Package Manager](/docs/pkg-manager)
