Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: how to edit an installed package?

Tags:

python

pip

I installed some package via pip install something. I want to edit the source code for the package something. Where is it (on ubuntu 12.04) and how do I make it reload each time I edit the source code and run it?

Currently I am editing the source code, and then running python setup.py again and again, which turns out to be quite a hassle.

like image 418
KJW Avatar asked Apr 15 '14 05:04

KJW


People also ask

How do you manage a package in Python?

You can add Python . tar and . gz packages to your environment with a simple pip install command, or else install them using a script. You can also uninstall Python packages using pip, as well.

Where are my Python packages installed?

When a package is installed globally, it's made available to all users that log into the system. Typically, that means Python and all packages will get installed to a directory under /usr/local/bin/ for a Unix-based system, or \Program Files\ for Windows.


3 Answers

You should never edit an installed package. Instead, install a forked version of package.

If you need to edit the code frequently, DO NOT install the package via pip install something and edit the code in '.../site_packages/...'

Instead, put the source code under a development directory, and install it with

$ python setup.py develop

or

$ pip install -e path/to/SomePackage

Or use a vcs at the first place

$ pip install -e git+https://github.com/lakshmivyas/hyde.git#egg=hyde

Put your changes in a version control system, and tell pip to install it explicitly.

Reference: Edit mode

like image 167
Leonardo.Z Avatar answered Oct 17 '22 07:10

Leonardo.Z


You can edit the files installed in /usr/local/lib/python2.7/dist-packages/. Do note that you will have to use sudo or become root.

The better option would be to use virtual environment for your development. Then you can edit the files installed with your permissions inside your virtual environment and only affect the current project.
In this case the files are in ./venv/lib/pythonX.Y/site-packages

The path could be dist-packages or site-packages, you can read more in the answer to this question

Note that, as the rest of the people have mentioned, this should only be used sparingly, for small tests or debug, and being sure to revert your changes to prevent issues when upgrading the package.
To properly apply a change to the package (a fix or a new feature) go for the options described in other answers to contribute to the repo or fork it.

like image 34
oz123 Avatar answered Oct 17 '22 08:10

oz123


I too needed to change some things inside a package. Taking inspiration from the previous answers, You can do the following.

  1. Fork the package/repo to your GitHub
  2. clone your forked version and create a new branch of your choice
  3. make changes and push code to the new branch on your repository
  4. you can easily use pip install -e git+repositoryurl@branchname
  5. There are certain things to consider if its a private repository
like image 25
Karan Mittal Avatar answered Oct 17 '22 08:10

Karan Mittal