Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make my Python module available system wide on Linux?

I made myself a little module which I happen to use quite a lot. Whenever I need it I simply copy it to the folder in which I want to use it. Since I am lazy I wanted to install it so that I can call it from anywhere, even the interactive prompt. So I read a bit about installing here, and concluded I needed to copy the file over to /usr/local/lib/python2.7/site-packages. That however, doesn't seem to do anything.

Does anybody know where I need to copy my module for it to work system wide?

like image 346
kramer65 Avatar asked Jun 21 '13 13:06

kramer65


2 Answers

There are methods to install Python modules system-wide. You may want to take a look at distutils. A good tutorial for distutils2 (the current version) can be found here.

You basically have to write a file setup.py which tells distutils what to do. Then you can simply

python setup.py install

with root permissions to install your module systemwide. There are good and easy examples, plus it's the cleanest way I can imagine.

like image 53
Johannes P Avatar answered Sep 28 '22 07:09

Johannes P


The answer is: it's all about permissions.

It's not enough to place the file in the correct location, like, such instance: /usr/local/lib/python2.7/dist-packages, you also need to ensure that the file can be read by the process you're running, in this case, python.

Be sure that "other" users have read access to the file. Open the bash console and execute this:

sudo chmod o+r "yourmodule.py"
[Introduce the password]

After this go again to python and try the import:

import "yourmodule"

As long as the path where the .py file is located is present in PYTHONPATH + the file is readable then you should be allowed to import it.

like image 43
cSn Avatar answered Sep 28 '22 06:09

cSn