Skip to content

Commit

Permalink
Simplify editable install docs (#6142)
Browse files Browse the repository at this point in the history
  • Loading branch information
debonte authored Jul 15, 2024
1 parent 43d4efd commit 564deb3
Showing 1 changed file with 12 additions and 24 deletions.
36 changes: 12 additions & 24 deletions TROUBLESHOOTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,33 +41,21 @@ Note that if you are coming to Pylance from using the Microsoft Python Language

### Editable install modules not found

[PEP 660](https://peps.python.org/pep-0660/) enables build backends (ex. setuptools) to
use import hooks to direct the [import machinery](https://docs.python.org/3/reference/import.html)
to the package's source files rather than using a `.pth` file. Import hooks can provide
an editable installation that is a more accurate representation of your real installation.
However, because resolving module locations using an import hook requires executing Python
code, they are not usable by Pylance and other static analysis tools. Therefore, if your
editable install is configured to use import hooks, Pylance will be unable to find the
corresponding source files.

If you want to use static analysis tools with an editable install, you should configure
the editable install to use `.pth` files instead of import hooks. See your build backend's
documentation for details on how to do this. We have provided some basic information for
common build backends below.

#### Setuptools
Setuptools currently supports two ways to request
["compat mode"](https://setuptools.pypa.io/en/latest/userguide/development_mode.html#legacy-behavior)
where a `.pth` file will be used -- a config setting and an environment variable. Another
option is ["strict mode"](https://setuptools.pypa.io/en/latest/userguide/development_mode.html#strict-editable-installs)
which uses symlinks instead.

#### Hatch/Hatchling
[Hatchling](https://hatch.pypa.io/latest/config/build/#dev-mode) uses `.pth` files by
If you want to use static analysis tools with an editable install, you should configure the editable install to use `.pth` files that contain file paths rather than executable lines (prefixed with `import`) that install import hooks. See your package manager’s documentation for details on how to do this. We have provided some basic information for common package managers below.

Import hooks can provide an editable installation that is a more accurate representation of your real installation. However, because resolving module locations using an import hook requires executing Python code, they are not usable by Pylance and other static analysis tools. Therefore, if your editable install is configured to use import hooks, Pylance will be unable to find the corresponding source files.

#### pip / setuptools
`pip` (`setuptools`) supports two ways to avoid import hooks:
- [compat mode](https://setuptools.pypa.io/en/latest/userguide/development_mode.html#legacy-behavior)
- [strict mode](https://setuptools.pypa.io/en/latest/userguide/development_mode.html#strict-editable-installs)

#### Hatch / Hatchling
[Hatchling](https://hatch.pypa.io/latest/config/build/#dev-mode) uses path-based `.pth` files by
default. It will only use import hooks if you set `dev-mode-exact` to `true`.

#### PDM
[PDM](https://pdm.fming.dev/latest/pyproject/build/#editable-build-backend) uses `.pth`
[PDM](https://pdm.fming.dev/latest/pyproject/build/#editable-build-backend) uses path-based `.pth`
files by default. It will only use import hooks if you set `editable-backend` to
`"editables"`.

Expand Down

0 comments on commit 564deb3

Please sign in to comment.