Skip to main content

dumpenv: Dump values of the current Python environment

Project description

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.

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

dumpenv-2018.19.0.tar.gz (5.7 kB view details)

Uploaded Source

File details

Details for the file dumpenv-2018.19.0.tar.gz.

File metadata

  • Download URL: dumpenv-2018.19.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for dumpenv-2018.19.0.tar.gz
Algorithm Hash digest
SHA256 01d1102920aa4eb8ec294cbce4befc6217c093e6773e6ad2060c0be2a8702e76
MD5 1a10194902297ba127ecb8cd28f6e00a
BLAKE2b-256 f7a3284296e7e3973479a852f99eb75f10297b1a40eb04ad23f77f90a4bb658a

See more details on using hashes here.

Supported by

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