Skip to main content
https://travis-ci.org/guettli/dumpenv.svg?branch=master

dumpenv: Dump values of the current Python environment

https://github.com/guettli/dumpenv

Why?

Sometimes source code works in one environment, but in a different environment it fails.

Same source code, but different results …. Hmm, there must be a differenence in the environment …. but what?

You can use this tool to dump a lot of values which influence the python interpreter.

Then you can use any diff tool (I like meld) to compare both environments.

At the moment these text files get created:

  • PATH

  • PYTHONPATH

  • locale

  • os

  • os_environ

  • pip_freeze

  • platform

  • site

  • sys

  • sys_path

I guess the above names do not need any explanation.

Above files get created in a temporary directory which roughly looks like this:

/tmp/dumpenv_{USER}@{HOST}--{VIRTUAL_ENV}_RANDOM

To make the diff easier to read $VIRTUAL_ENV and $HOME get replaced in the output.

Usage

Usage:

dumpenv [-o OUTPUT_DIRECTORY | --output-directory=OUTPUT_DIRECTORY]
dumpenv (-h | --help)

Options:

-o --output-directory OUTPUT_DIRECTORY Create text file in this directory.
                                     Or use environment variable DUMPENV_OUTPUT_DIRECTORY

Example

Example:

user1@host1> dumpenv
Dumped environment to directory OUT1

user2@host2> dumpenv
Dumped environment to directory OUT2

me@pc> scp -r user1@host1:/tmp/OUT1/ tmp/
me@pc> scp -r user2@host2:/tmp/OUT2/ tmp/
me@pc> meld tmp/OUT1 tmp/OUT2

… Ah! Now you see the difference :-)

API

Call it from Python like this:

out_dir = dumpenv.create_data_and_dump_it()

Install

Install from pypi:

pip install dumpenv

Use Cases

Use case 1: Your script works, but it does not, if called via unix cron. Run dumpenv via shell and via cron and compare the result.

Use case 2: Your code works via web (wsgi, django, …) but it fails if you call it on the shell.

Use case 3: Your code works in the development environment, but not on the production server.

Dream

In my case Python scripts run in different environments:

  • called from PyCharm

  • called from Shell

  • called from Cron

  • called from webserver

  • called from subprocess

  • called from configuration management (for example Ansible)

  • called from systemd

My dream is that the environment from all above calls is equal.

I think this dream will never come true. I think it is better to reduce the above list.

Advertisment

Feedback

Feedback is very welcome, please create an issue at github or write me an email.

Release files for dumpenv 2018.19.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dumpenv 2018.19.0
File Size Uploaded
dumpenv-2018.19.0.tar.gz 5.7 kB Details

Release files / dumpenv-2018.19.0.tar.gz

Download URL dumpenv-2018.19.0.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
01d1102920aa4eb8ec294cbce4befc6217c093e6773e6ad2060c0be2a8702e76
BLAKE2b-256 checksum
How to use checksums
f7a3284296e7e3973479a852f99eb75f10297b1a40eb04ad23f77f90a4bb658a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/2.7.15
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page