I have a Python application that comes with a command line script. I expose the script via setuptools
"entry point" feature. Whenever a user runs the script, I would like the environment to be consistent with the package's requirements.txt
. This means that the environment must contain versions of each dependency package that match the version specifiers in requirements.txt
.
I know that this can be achieved with venv
/virtualenv
by making my users create a virtual environment, install requirements.txt
in it, and activate that virtual environment whenever they run the script. I do not want to impose this burden of manually invoking virtualenv
on users. Ruby's bundler
solves this problem by providing bundler/setup
-- when loaded, it modifies Ruby's $LOAD_PATH
to reflect the contents of the Gemfile
(analogue of requirements.txt
). Thus it can be placed at the top of a script to transparently control the runtime environment. Does Python have an equivalent? That is, a way to set the environment at runtime according to requirements.txt
without imposing additional complexity on the user?