I have installed a python package with python setup.py install
.
How do I uninstall it?
Note: Avoid using python setup.py install
use pip install .
You need to remove all files manually, and also undo any other stuff that installation did manually.
If you don't know the list of all files, you can reinstall it with the --record
option, and take a look at the list this produces.
To record a list of installed files, you can use:
python setup.py install --record files.txt
Once you want to uninstall you can use xargs to do the removal:
xargs rm -rf < files.txt
Or if you're running Windows, use Powershell:
Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}
Then delete also the containing directory, e.g. /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/
on macOS
. It has no files, but Python will still import an empty module:
>>> import my_module
>>> my_module.__file__
None
Once deleted, Python shows:
>>> import my_module
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'
For me, the following mostly works:
have pip installed, e.g.:
$ easy_install pip
Check, how is your installed package named from pip point of view:
$ pip freeze
This shall list names of all packages, you have installed (and which were detected by pip).
The name can be sometime long, then use just the name of the package being shown at the and after #egg=
. You can also in most cases ignore the version part (whatever follows ==
or -
).
Then uninstall the package:
$ pip uninstall package.name.you.have.found
If it asks for confirmation about removing the package, then you are lucky guy and it will be removed.
pip shall detect all packages, which were installed by pip. It shall also detect most of the packages installed via easy_install or setup.py, but this may in some rare cases fail.
Here is real sample from my local test with package named ttr.rdstmc
on MS Windows.
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev
$ python setup.py develop
.....
.....
Finished processing dependencies for ttr.rdstmc==0.0.1dev
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
-e hg+https://[email protected]/vlcinsky/ttr.rdstmc@d61a9922920c508862602f7f39e496f7b99315f0#egg=ttr.rdstmc-dev
ttr.utcutils==0.1.1dev
$ pip uninstall ttr.rdstmc
Uninstalling ttr.rdstmc:
c:\python27\lib\site-packages\ttr.rdstmc.egg-link
Proceed (y/n)? y
Successfully uninstalled ttr.rdstmc
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev
All what is written above still applies, anyway, there are small modifications available now.
Recent python versions come with a package ensurepip
allowing to install pip even when being offline:
$ python -m ensurepip --upgrade
On some systems (like Debian Jessie) this is not available (to prevent breaking system python installation).
grep
or find
Examples above assume, you have grep
installed. I had (at the time I had MS Windows on my machine) installed set of linux utilities (incl. grep). Alternatively, use native MS Windows find
or simply ignore that filtering and find the name in a bit longer list of detected python packages.
The #1 answer has problems:
xargs
command will fail, and delete any
files/directories which matched the individual words.-r
in rm -rf
is unnecessary and at worst could delete things you
don't want to.Instead, for unix-like:
sudo python setup.py install --record files.txt
# inspect files.txt to make sure it looks ok. Then:
tr '\n' '\0' < files.txt | xargs -0 sudo rm -f --
And for windows:
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
There are also unsolvable problems with uninstalling setup.py
install which won't bother you in a typical case. For a more complete answer, see this wiki page:
First record the files you have installed. You can repeat this command, even if you have previously run setup.py install
:
python setup.py install --record files.txt
When you want to uninstall you can just:
sudo rm $(cat files.txt)
This works because the rm command takes a whitespace-seperated list of files to delete and your installation record is just such a list.
Now python gives you the choice to install pip
during the installation (I am on Windows, and at least python does so for Windows!). Considering you had chosen to install pip
during installation of python (you don't actually have to choose because it is default), pip
is already installed for you. Then, type in pip
in command prompt, you should see a help come up. You can find necessary usage instructions there. E.g. pip list
shows you the list of installed packages. You can use
pip uninstall package_name
to uninstall any package that you don't want anymore. Read more here (pip documentation).
Probably you can do this as an alternative :-
1) Get the python version -
[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55)
-> The above command gives you the current python Version which is 2.4.3
2) Get the installation directory of python -
[linux machine]# whereis python
python: /usr/bin/python /usr/bin/python2.4 /usr/lib/python2.4 /usr/local/bin/python2.5 /usr/include/python2.4 /usr/share/man/man1/python.1.gz
-> From above command you can get the installation directory which is - /usr/lib/python2.4/site-packages
3) From here you can remove the packages and python egg files
[linux machine]# cd /usr/lib/python2.4/site-packages
[linux machine]# rm -rf paramiko-1.12.0-py2.4.egg paramiko-1.7.7.1-py2.4.egg paramiko-1.9.0-py2.4.egg
This worked for me.. And i was able to uninstall package which was troubling me :)
At {virtualenv}/lib/python2.7/site-packages/
(if not using virtualenv then {system_dir}/lib/python2.7/dist-packages/
)
distribute-0.6.34-py2.7.egg
) easy-install.pth
, remove the corresponding line (it should be a path to the source directory or of an egg file).If you still have files that are supposed to be deleted after re-installing a package, make sure the folder build
is also deleted. Therefore, assuming that pkg
is the package you want to delete:
rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )")
rm -rf build
Obove work out for python3 and delete the package and its *.egg-info file
I had run "python setup.py install" at some point in the past accidentally in my global environment, and had much difficulty uninstalling. These solutions didn't help. "pip uninstall " didn't work with "Can't uninstall 'splunk-appinspect'. No files were found to uninstall." "sudo pip uninstall " didn't work "Cannot uninstall requirement splunk-appinspect, not installed". I tried uninstalling pip, deleting the pip cache, searching my hard drive for the package, etc...
"pip show " eventually led me to the solution, the "Location:" was pointing to a directory, and renaming that directory caused the packaged to be removed from pip's list. I renamed the directory back, and it didn't reappear in pip's list, and now I can reinstall my package in a virtualenv.
I had run python setup.py install
once in my PyCharm, it installs all the packages into my conda base environment. Later when I want to remove all these packages, pip uninstall
does not work. I had to delete them from /anaconda3/lib/python3.7/site-packages manually :(
So I don't see the reason why they use setup.py instead of writing requirements.txt file. The requirement file can be used to install packages in virtual environment and won't mess with system python packages.
pip uninstall <your_package>
. See stackoverflow.com/questions/1231688/…. – Joachim WIt is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
so this is still an issue. – Josh