310 votes

Socket.error: [Errno 48] Adresse déjà utilisée

Je tente de configurer un serveur avec python depuis le terminal mac.

Je me déplace vers l'emplacement du dossier et utilise:

python -m SimpleHTTPServer

Mais cela me donne une erreur:

socket.error: [Errno 48] Adresse déjà utilisée

J'avais précédemment ouvert une connexion en utilisant la même commande pour un site web différent situé dans un endroit différent de ma machine.

460voto

Martijn Pieters Points 271458

Vous avez déjà un processus lié au port par défaut (8000). Si vous avez déjà exécuté le même module auparavant, il est très probable que le processus soit toujours lié au port. Essayez de localiser l'autre processus en premier :

$ ps -fA | grep python
  501 81651 12648   0  9:53PM ttys000    0:00.16 python -m SimpleHTTPServer

Les arguments de la commande sont inclus, vous pouvez donc repérer celui qui exécute SimpleHTTPServer si plus d'un processus python est actif. Vous voudrez peut-être tester si http://localhost:8000/ affiche toujours une liste de répertoires pour les fichiers locaux.

Le deuxième nombre est le numéro du processus; arrêtez le serveur en lui envoyant un signal :

kill 81651

Cela envoie un signal standard SIGTERM; si le processus ne répond pas, vous devrez peut-être recourir à des méthodes plus dures comme l'envoi d'un signal SIGKILL (kill -s KILL or kill -9 ) à la place. Voir Wikipedia pour plus de détails.

Alternativement, exécutez le serveur sur un autre port, en spécifiant le port alternatif sur la ligne de commande :

$ python -m SimpleHTTPServer 8910
Serving HTTP on 0.0.0.0 port 8910 ...

puis accédez au serveur en tant que http://localhost:8910; où 8910 peut être n'importe quel nombre à partir de 1024, à condition que le port ne soit pas déjà pris.

288voto

Snail Points 983

Simple solution

  1. Recherchez le processus utilisant le port 8080:

    sudo lsof -i:8080

  2. Arrêtez le processus sur ce port:

    tuer $PID

    tuer -9 $PID //pour tuer le port de force

PID est obtenu à partir de la sortie de l'étape 1.

54voto

candy_man Points 461

Utilisez

 sudo lsof -i:5000

Cela vous donnera une liste des processus utilisant le port, le cas échéant. Une fois la liste des processus donnée, utilisez l'identifiant dans la colonne PID pour mettre fin au processus utilisant

 kill 379 #utilisez le PID fourni

33voto

Aditya Malviya Points 1841

Commande simple d'une ligne pour s'en débarrasser, tapez la commande ci-dessous dans le terminal,

ps -a

Cela listera tous les processus, vérifiez celui utilisé par Python et tapez la commande ci-dessous dans le terminal,

kill -9 (ID du processus) 

Par exemple kill -9 33178

24voto

Mark Chapel Points 125

Au fait, pour éviter que cela ne se produise en premier lieu, appuyez simplement sur Ctrl+C dans le terminal pendant que SimpleHTTPServer fonctionne normalement. Cela arrêtera "correctement" le serveur et libérera le port afin que vous n'ayez pas à rechercher et à tuer à nouveau le processus avant de redémarrer le serveur.

(Mods: J'ai essayé de mettre ce commentaire sur la meilleure réponse où il se trouve, mais je n'ai pas assez de réputation.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X