Skip to main content

a python library that simplifies chroot handling

Project description

test coverage


pychroot is a python library that simplifies chroot handling. Specifically, it provides the Chroot context manager that allows for more pythonic methods for running code in or controlling access to chroots.


In its simplest form, pychroot can be used like the following:

from chroot import Chroot

with Chroot('/path/to/chroot'):
    code that will be run
    inside the chroot

By default, this will bind mount the host’s /dev, /proc, and /sys filesystems into the chroot as well as the /etc/resolv.conf file (so DNS resolution works as expected in the chroot).

To customize that, Chroot accepts a mountpoints parameter that is a dictionary of mappings to be merged with the defaults. Otherwise, it is also possible to override the default mountpoints. See the documentation for more details.

Namespaces are used by the context manager to segregate the chroot instance from the host system. By default, new mount, UTS, IPC, and pid namespaces are used. This allows for simplified handling of the teardown phase for the chroot environments.

One quirk of note is that currently local variables are not propagated back from the chroot context to the main context due to the usage of separate processes running the contexts. This means that something similar to the following won’t work:

from chroot import Chroot

with Chroot('/path/to/chroot'):
    a = 42

In this case, a NameError exception will be raised unless a was previously defined. This will probably be fixed to some extent in a future release.


Python versions 2.7, 3.3, 3.4 are supported. Note however, that pychroot is quite Linux specific due to the use of namespaces via the snakeoil library which also require proper kernel support.


Please create an issue in the issue tracker.


Tests are handled via pytest, run via:


which is also integrated into, run via:

python test

A tox config is also provided so it’s possible to run tests for all supported versions of python by just calling tox in the project’s root directory. Also, note that mock is required for tests if you’re using anything less than python 3.3.


via pip:

pip install pychroot


python install

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

pychroot-0.9.8.tar.gz (11.3 kB view hashes)

Uploaded Source

Supported by

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