Suppression du module python installé en mode développement

90

Salut, j'essayais le packaging python en utilisant setuptools et pour tester j'ai installé le module en mode développement. c'est à dire

python setup.py develop

Cela a ajouté mon répertoire modules à sys.path. Maintenant, je veux supprimer le module, y a-t-il un moyen de le faire?

Merci d'avance

copyninja
la source
4
Commencez à utiliser pipou un autre gestionnaire avec capacité de désinstallation pour gérer les packages python.
Tomasz Wysocki
1
@Tomasz Comment faites-vous l'équivalent de python setup.py developwith pip?
akaihola
7
pip install -e.
Tomasz Wysocki
11
«pip» n'est pas la bonne réponse à cette question. L'installation d'un projet que vous développez à l'aide de «pip» pour l'exécuter ou l'utiliser signifie que vous devrez réinstaller chaque fois que vous modifiez le code source. La bonne façon est d'utiliser 'setup.py develop' comme le dit la question d'origine.
Jonathan Hartley
6
@JonathanHartley C'est tout simplement faux; pip a un argument --editable(ou -e) qui se comporte à peu près de manière équivalente à setuptools 'develop . Je pensais que --editablec'était peut-être plus récent que votre commentaire, mais non - une recherche rapide du repo pip sur GitHub fait apparaître des références à des éditables dans les commits en 2009. De plus, je vois que cela a déjà été souligné par Tomasz Wysocki avant que vous ne commentiez !
Mark Amery

Réponses:

223

Utilisez l' option --uninstallou -upour develop, c'est- à -dire:

python setup.py develop --uninstall

Cela le supprimera de easy-install.pth et supprimera le .egg-link. La seule chose qu'il ne fait pas est de supprimer (encore) les scripts.

PJ Eby
la source
3
Notez que si votre version de développement a installé certains exécutables et que vous les avez modifiés dans votre setup.py, vous devez les supprimer manuellement.
norok2
1
Je l'exécute comme expliqué, aucune erreur dans la sortie, mais je suis toujours capable d'importer mon package de développement globalement, il semble qu'il n'a pas été supprimé. EDIT: Je sais pourquoi, j'ai dû l'exécuter avec --useroption comme je l'ai fait lors de l'installation:python setup.py develop --uninstall --user
Marek
Je ne pense pas que ce soit sûr car les choses peuvent changer en développant (par exemple) en renommant le module. Vous devez tout supprimer manuellement.
mathtick
@ norok2 quelles sont les commandes manuelles à exécuter pour supprimer ces exécutables. Autant que je sache, ce qui précède fonctionne pour certaines versions de python / pip bien que je ne sache pas lesquelles.
Charlie Parker
1
@CharlieParker rmou delselon votre système d'exploitation. Ce que je voulais dire, c'est que si vous aviez des exécutables au moment de l'installation et que vous modifiez ensuite leurs noms (ou les supprimez) dans votre setup.py, alors vous setup.pyne les connaîtrez plus (peu importe votre version pip/ pythonet vous devez vous en occuper. manuellement. Ils sont généralement situés dans un binrépertoire sur les systèmes POSIX (lire Linux, BSD, MacOS X),
je
16

Modifiez easy-install.pth dans votre répertoire site-packages et supprimez la ligne qui pointe vers votre version de développement de ce package.

Zooko
la source
Oui, j'ai fait exactement cela et un autre fichier était là par nom package-egg-link ou quelque chose que j'ai supprimé et maintenant la référence au module est supprimée Merci :)
copyninja
10
"setup.py develop --uninstall" le fait pour vous, voir la réponse de @ pjeby
Jonathan Hartley
3
Cela a fonctionné pour moi en cas d' develop --uninstalléchec car j'avais divisé un projet en deux et le mauvais est resté dans le répertoire d'origine.
Wesley Baugh
1

J'ai déjà eu un problème similaire à celui-ci. Ce que j'ai fait, c'est avoir chargé le shell Python, importé le module, puis imprimé son __file__attribut. À partir de là, je supprimerais simplement le dossier ou le fichier associé.

Ce que vous voudrez peut-être examiner, c'est l'utilisation de virtualenv, ce système vous permet de créer une instance de python distincte de votre système. Tous les modules que vous installez ou utilisez dans cette instance sont autonomes, y compris la version du module.

Je garde tous mes projets maintenant à l'intérieur de leur propre virtualenv, ce qui me permet d'installer et d'utiliser les modules que je veux sans me soucier de bousiller les modules d'autres projets.

Tanerax
la source
Eh bien, à partir de la prochaine fois que je jouerai avec des packages, je vais l'utiliser pour ne pas bousiller mon système Python. Merci pour l'info
copyninja