Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Installing pythonstartup file

How do I install the pythonstartup file so that it runs on command like python myfile.py?

I tried to install it into my /home/myuser directory for Ubuntu, but it said that I had insufficient permissions. Furthermore, different places say alternately that it should be in all caps or in all lower case with a period before it. The Python command line guide does not seem to explain where to put the file, or how to change which environment variable to 'point' to it.

like image 621
Celeritatis Avatar asked Apr 29 '11 20:04

Celeritatis


People also ask

How do I set up Pythonstartup?

Right-click My Computer and click Properties. Click the Advanced tab and click Environment Variables. Under System variables, click New. Add PYTHONSTARTUP to Variable name.

What is Pythonstartup in Python?

PYTHONSTARTUP. If this is the name of a readable file, the Python commands in that file are executed before the first prompt is displayed in interactive mode.

What is Pythonstartup environment variable?

PYTHONSTARTUP is an environment variable you will define specifying the location of the path to a python file. This python script will be run by python before starting the python interactive mode (interpreter). You can use it for various enhancements like preloading modules, setting colors.


2 Answers

In your ~/.bashrc:

export PYTHONSTARTUP=$HOME/.pythonstartup

and put your python code in $HOME/.pythonstartup, like:

import rlcompleter
import readline

readline.parse_and_bind("tab: complete")

Then run the interactive shell:

python

See the imports from PYTHONSTARTUP are processed. This only works in python interactive mode.

For more information about PYTHONSTARTUP variable, read the python man page:

$ man python
like image 94
mg. Avatar answered Oct 15 '22 10:10

mg.


How to execute the python file defined in $PYTHONSTARTUP when you execute a file like python foobar.py

Run this command to find out where your OS has defined USER_SITE:

$ python -c "import site; site._script()" 

Mine says:

USER_SITE: '/home/el/.local/lib64/python2.7/site-packages'

Create a new file there called /home/el/.local/lib64/python2.7/site-packages/usercustomize.py, put this code in there:

try:
    import your_things
    import readline
    print("ROCKETMAN!")

except ImportError:
    print("Can't load your things")
    print("Either exit here, or perform remedial actions")
    exit()

Close the terminal and reopen it to clear out any shenanigans.

Make a new file python foobar.py anywhere on the filesystem, put this code in there:

#Note there is no your_things module imported here.
#Print your_things version:
print(your_things.__version__)

Run it:

python foobar.py 
ROCKETMAN!
'1.12.0'

What just happened.

You used the python sitewide specific python configuration hook and imported libraries in the usercustomize.py file which ran before foobar.py.

Documentation: https://docs.python.org/2/library/site.html

Where I found this trick: https://nedbatchelder.com/blog/201001/running_code_at_python_startup.html

like image 45
Eric Leschinski Avatar answered Oct 15 '22 09:10

Eric Leschinski