I had a function all by itself in the file [filename].py, and the file was properly executable. This is how people advised me to call it externally:

import func

But I was getting errors all over the place. So I contacted Python help and they told me something different, which worked when I tested it.

Let's say the function inside [filename].py is called funcname. This is what I did:

>>> import [filename]
>>> [filename].[funcname]()
[function returned output successfully]

Now, I navigated to the directory in which [funcname].py was located, so there were no path issues. If not in that directory, I'd have to add it to the $PATH variable, although Linux people probably know of a better way to do it.

If not in that directory, you must add it to the $PYTHONPATH variable, not $PATH. ($PATH is for executable programs, not python modules). Another way is to put filename.py in your site-packages directory (or your per-user site-packages directory). The third way is to dynamically add the folder to sys.path at run time.

Edited 3 Years Ago by Gribouillis

Do you happen to know what the command in bash 4.2.45(1) is for permanently altering the $PYTHONPATH variable? I imagine it's set, but I don't know the syntax.

I did check the paths and there is indeed a site-packages subdirectory where I could place my module script files, so that's an option.

In terms of the third option, what I've tried, and what appears to work, is this:

>>>import sys

Which really ain't that much of a hassle, so, if all else fails, I can do that.

Thanks for your help. :)

Edited 3 Years Ago by farmwife: formatting issues

In your ~/.bashrc , add the line


to add ~/foo/bar to the list of directories. You may also create a personal site-packages directory


(or python3.2, ...)

Edited 3 Years Ago by Gribouillis

Hmm. I'm going to write personal library calls that chmod +x a fresh python script and copy it to the personal site-packages directory, unless that functionality is already in an existing python library.

This question has already been answered. Start a new discussion instead.