I want to execute code after the python interpreter has started.
We use virtualenv and up to now we had a file called sitecustomize.py which got executed during interpreter start up.
The sitecustomize.py was part of our project. We use the Django definition of this term: It is a small python module which only holds config and nearly no code: Django's Definition of "Project"
Unfortunately some linux distros (Ubuntu) provide a global sitecustomize, and our per virtualenv sitecustomize does not get loaded.
Question
How to run Python code on interpreter startup in a virtualenv?
This code should be executed even if the interactive interpreter gets started.
Goal vs Strategy
I don't care if this hook is called "sitecustomize" or different :-)
An addition to @guettli's answer: you can even make a
.pth
file a part of your package's distribution, so when it is installed it will make some code run on python startup, and when it is uninstalled, this code will no longer run.Example package:
startup.pth
setup.py
Contents of
startup.pth
:Contents of
setup.py
:After creating these files, run
pip install .
in the same directory with the files. That should installstartup.pth
in your root python directory, and you should seeSuccess!!
printed every time your interpreter runs. To undo that, runpip uninstall pth_startup_example
.You can add this to an existing package, or make a package like this a dependency of a different package.