Я встановив пакет python з python setup.py install
.
Як його видалити?
It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
тому це все ще проблема.
Я встановив пакет python з python setup.py install
.
Як його видалити?
It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
тому це все ще проблема.
Відповіді:
Примітка. Уникайте python setup.py install
використанняpip install .
Вам потрібно видалити всі файли вручну, а також скасувати будь-які інші речі, які встановлено вручну.
Якщо ви не знаєте переліку всіх файлів, ви можете перевстановити його за допомогою --record
параметра та ознайомитись зі списком, який він створює.
Для запису списку встановлених файлів можна скористатися:
python setup.py install --record files.txt
Після видалення ви можете використовувати xargs для видалення:
xargs rm -rf < files.txt
Або якщо ви працюєте з Windows, використовуйте Powershell:
Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}
Потім видаліть також каталог, що містить, наприклад, /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/
на macOS
. У ньому немає файлів, але Python все одно імпортує порожній модуль:
>>> import my_module
>>> my_module.__file__
None
Після видалення Python показує:
>>> import my_module
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'
cat files.txt | xargs sudo rm -rf
Для мене в основному працює наступне:
встановити pip, наприклад:
$ easy_install pip
Перевірте, як називається встановлений пакет з точки зору pip:
$ pip freeze
У цьому списку відображаються назви всіх встановлених вами пакетів (які були виявлені піп). Ім’я може бути десь довгим, тоді використовуйте лише назву пакета, що відображається на і після #egg=
. Ви також можете в більшості випадків ігнорувати частину версії (що далі ==
або -
).
Потім видаліть пакет:
$ pip uninstall package.name.you.have.found
Якщо він попросить підтвердження про видалення пакета, то вам пощастить, і він буде видалений.
pip повинен виявляти всі пакунки, які були встановлені через pip. Він також повинен виявити більшість пакетів, встановлених через easy_install або setup.py, але це може в деяких рідкісних випадках вийти з ладу.
Ось справжній зразок мого локального тесту з пакетом, названим ttr.rdstmc
у 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://vlcinsky@bitbucket.org/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
Все, що написано вище, як і раніше, стосується, все одно, доступні невеликі модифікації.
Останні версії python поставляються з пакетом, ensurepip
що дозволяє встановлювати pip навіть у режимі офлайн:
$ python -m securepip - оновлення
У деяких системах (наприклад, Debian Jessie) це недоступно (щоб запобігти порушенню встановлення системного пітона).
grep
абоfind
Приклади вище припускають, що ви grep
встановили. У мене (у той час, коли на моїй машині був MS Windows) встановлено набір утиліт Linux (включаючи grep). Крім того, використовуйте рідну MS Windows find
або просто ігноруйте цю фільтрацію та знайдіть її ім'я в трохи більш тривалому списку виявлених пакетів python.
distutils
, distribute
тощо) ...
setuptools
. Ви можете перевірити bitbucket.org/vlcinsky/ttr.aws.utils.s3 (що не ідеально). У всякому разі, я дуже незадоволений використанням пакетів простору імен, колись імпорт порушується без видимих причин. Але це вже інша історія.
setuptools
, насправді використовую distribute
. Ще один урок: коли ви встановлюєте власний пакет з pypi і плануєте розробити ще один локальний обмін тим самим простором імен, не використовуйте $ pip install <the package>
, не використовуйте $ easy_install <the package>
, інакше ви стикаєтесь з конфліктами при імпорті пакету розробки.
easy_install --user --prefix=$HOME pip
. Потім я додав наступне в моїх PATH: ln -s /home/tflutre/.local/bin/pip ~/bin
, ln -s /home/tflutre/.local/bin/pip2.7 ~/bin
і ln -s /home/tflutre/.local/bin/pip2 ~/bin
.
pip uninstall module
або він python -m pip uninstall module
повинен працювати. Також має бути кросплатформна, як це частина Python.
У відповіді №1 є проблеми:
xargs
команда не вдасться та видалить будь-які файли / каталоги, які відповідали окремим словам.-r
в rm -rf
непотрібно і в гіршому випадку може видалити речі , які ви не хочете.Натомість для unix-подібних:
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 --
А для вікон:
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
Існують також нерозв’язні проблеми з видаленням setup.py
установки, які не турбують вас у типовому випадку. Для більш повної відповіді дивіться цю сторінку вікі:
OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"
printf
«s рядки формату буде помилкою , якщо рядок трапляється містити , наприклад , %
або \
символи. Завжди надайте рядок формату: printf '%s\0' "$line"
(також уникає відлуння). Хоча ви можете додатково уникнути циклу, просто скориставшисьtr '\n' '\0' < files.txt | xargs -0 rm -f
Спочатку запишіть встановлені файли. Ви можете повторити цю команду, навіть якщо ви раніше виконували setup.py install
:
python setup.py install --record files.txt
Коли ви хочете видалити, ви можете просто:
sudo rm $(cat files.txt)
Це працює, тому що команда rm видаляє відокремлений пробілом список файлів для видалення, а ваша інсталяційна запис є саме таким списком.
Тепер python дає вам вибір встановити pip
під час встановлення (я в Windows, і принаймні python робить це для Windows!). Зважаючи на те, що ви вирішили встановити pip
під час встановлення python (ви насправді не повинні вибирати, оскільки він за замовчуванням), pip
для вас уже встановлено. Потім введіть у pip
командному рядку, ви побачите довідку. Тут ви можете знайти необхідні інструкції щодо використання. Наприклад, pip list
ви показуєте список встановлених пакетів. Можна використовувати
pip uninstall package_name
видалити будь-який пакет, який ви більше не хочете. Докладніше читайте тут (документація на піп) .
Ледачий спосіб: просто видаліть з меню інсталяції Windows (якщо ви використовуєте Windows) або з команди rpm, за умови, що спочатку перевстановите її після створення дистрибутива.
Наприклад,
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
("foo" є прикладом звичайно).
Перейдіть у каталог пакунків python та видаліть .egg-файл, наприклад: У python 2.5 (ubuntu): /usr/lib/python2.5/site-packages/
У python 2.6 (ubuntu): /usr/local/lib/python2.6/dist-packages/
Не точно відповідаючи на питання, але щось, що мені допомагає щодня:
Встановіть ваші пакети за допомогою
pip install .
Це ставить пакет $HOME/.local
. Видалити за допомогою
pip uninstall <package_name>
pip unistall .
не працювало для мене, але pip uninstall <package_name>
зробив, дякую!
Можливо, ви можете це зробити як альтернативу: -
1) Отримайте версію пітона -
[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55)
-> Наведена вище команда дає поточну версію пітона, яка є 2.4.3
2) Отримайте інсталяційний каталог 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
-> З вищевказаної команди ви можете отримати інсталяційний каталог, який є - /usr/lib/python2.4/site-packages
3) Звідси ви можете видалити пакунки та файли яєць python
[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
Це працювало для мене .. І мені вдалося видалити пакет, який мене хвилював :)
Я думаю, ви можете відкрити setup.py, знайти ім'я пакета, а потім попросити pip його видалити.
Якщо припустимо, що ім'я доступне в змінній 'METADATA':
pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
Розширення того, що сказав Мартін, записування встановленого результату і невеликого розміру сценаріїв робить трюк досить чудово. Ось що я роблю ...
for i in $(less install.record);
sudo rm $i;
done;
І престо. Видалено.
sudo xargs rm -v < install.record
.
Якщо у вас все ще є файли, які слід видалити після повторної установки пакета, переконайтеся, що папка build
також видалена. Тому, припускаючи, що pkg
це пакет, який потрібно видалити:
rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )")
rm -rf build
Вище розробіть для python3 та видаліть пакет та його * .egg-info файл
At {virtualenv}/lib/python2.7/site-packages/
(якщо не використовувати virtualenv, то {system_dir}/lib/python2.7/dist-packages/
)
distribute-0.6.34-py2.7.egg
)easy-install.pth
, видаліть відповідний рядок (це повинен бути шлях до вихідного каталогу або до файлу яєць).Я в минулому минулому випадково в моєму глобальному середовищі запустив "python setup.py install" і у мене виникли великі труднощі з видаленням. Ці рішення не допомогли. "pip uninstall" не працював із "Неможливо видалити" splunk-appinspect ". Видалення файлів не знайдено." "видалення файлу sudo" не спрацювало "Неможливо видалити вимогу splunk-appinspect, не встановлено". Я спробував видалити pip, видаливши кеш-пам'ять, пошукав на жорсткому диску пакет тощо.
"pip show" врешті-решт привів мене до рішення, "Location:" вказував на каталог, а перейменування цього каталогу призвело до видалення упакованого із списку pip. Я перейменував каталог назад, і він не з’явився знову в списку піп, і тепер я можу перевстановити свій пакет у virtualenv.
Я працював python setup.py install
один раз у своєму PyCharm, він встановлює всі пакунки в моє базове середовище conda. Пізніше, коли я хочу видалити всі ці пакети, pip uninstall
не виходить. Мені довелося видалити їх з /anaconda3/lib/python3.7/site-packages вручну :(
Тому я не бачу причини, чому вони використовують setup.py замість того, щоб писати файл вимоги.txt. Файл вимоги можна використовувати для встановлення пакетів у віртуальному середовищі, і не возиться із системними пакетами python.
Можливо, краще буде видалити пов’язані файли, використовуючи bash для читання команд, наприклад:
sudo python setup.py install --record files.txt
sudo bash -c "cat files.txt | xargs rm -rf"
pip uninstall <your_package>
. Дивіться stackoverflow.com/questions/1231688/… .