Skip to main content

Editable installations

Project description

A Python library for creating "editable wheels"

This library supports the building of wheels which, when installed, will expose packages in a local directory on sys.path in "editable mode". In other words, changes to the package source will be reflected in the package visible to Python, without needing a reinstall.

Usage

Suppose you want to build a wheel for your project foo. Your project is located in the directory /path/to/foo. Under that directory, you have a src directory containing your project, which is a package called foo and a Python module called bar.py. So your directory structure looks like this:

/path/to/foo
|
+-- src
|   +-- foo
|   |   +-- __init__.py
|   +-- bar.py
|
+-- setup.py
+-- other files

Build your wheel as follows:

from editables import EditableProject

my_project = EditableProject("foo", "/path/to/foo")
my_project.add_to_path("src")

# Build a wheel however you prefer...
wheel = BuildAWheel()

# Add files to the wheel
for name, content in my_project.files():
    wheel.add_file(name, content)

# Record any runtime dependencies
for dep in my_project.dependencies():
    wheel.metadata.dependencies.add(dep)

The resulting wheel will, when installed, put the project src directory on sys.path so that editing the original source will take effect without needing a reinstall (i.e., as "editable" packages). The project is exposed on sys.path by adding a single .pth file, named after the project, into the wheel.

For more details, including how to control what gets exposed more precisely, see the documentation.

Note that this project doesn't build wheels directly. That's the responsibility of the calling code.

Python Compatibility

This project supports the same versions of Python as pip does. Currently that is Python 3.7 and later, and PyPy3 (although we don't test against PyPy).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

editables-0.6.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

editables-0.6-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file editables-0.6.tar.gz.

File metadata

  • Download URL: editables-0.6.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for editables-0.6.tar.gz
Algorithm Hash digest
SHA256 1163834902381c4613787951c5914800fdf155ae08848a373b8ea5006780977c
MD5 658e28eab5b342442d8edc42ff4fa3bd
BLAKE2b-256 82f802a4e9a0cb961b0feeb431ac96b231c157ecdcbbeacafe9e2fdb4b1dde39

See more details on using hashes here.

Provenance

The following attestation bundles were made for editables-0.6.tar.gz:

Publisher: publish.yml on pfmoore/editables

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file editables-0.6-py3-none-any.whl.

File metadata

  • Download URL: editables-0.6-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for editables-0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d70e4698078a1d033e7786d9c64e5be070d058a67c21417024d38a58ac20aa43
MD5 6e86938a1847d38251ae58e3576bd10d
BLAKE2b-256 cc0ed095533037fc9468f947b19f2da53f869804632b508808de41e86e801797

See more details on using hashes here.

Provenance

The following attestation bundles were made for editables-0.6-py3-none-any.whl:

Publisher: publish.yml on pfmoore/editables

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page