Comment démarrer un simple serveur Web en Python 3 sur Mac
Si vous êtes un utilisateur de Python, vous connaissez peut-être déjà l'astuce qui vous permet de créer instantanément un simple serveur web à l'aide d'une chaîne de commande facile à saisir dans la ligne de commande de Mac OS. Mais si vous êtes un utilisateur de Mac Python qui a installé ou mis à jour Python 3, vous constaterez que la chaîne de commande traditionnelle des versions antérieures de Python ne fonctionne pas pour lancer le serveur web dans les nouvelles versions de Python 3.x+.
Pas d'inquiétude, le simple truc du serveur web Python fonctionne toujours en Python 3 pour Mac (et pour Linux et Windows aussi bien sûr, mais nous couvrons évidemment MacOS), c'est que la syntaxe de la commande est juste légèrement différente. Nous allons vous montrer comment démarrer un simple serveur web avec Python 3 en utilisant le nouvel équivalent Python 3.0+ de la commande python -m SimpleHTTPServer.
Comment démarrer un serveur Web HTTP en Python 3.0+
Nous supposons que vous avez déjà installé ou mis à jour vers Python 3.0+ sur le Mac, cette variante de la commande nécessite Python 3.0 ou plus récent.
A partir de la ligne de commande, entrez la syntaxe suivante exactement* :
python -m http.server
OU (selon la façon dont Python 3.x est installé et nommé) :
python3 -m http.server
Appuyez sur return et Python 3 démarrera instantanément un simple serveur HTTP à partir du répertoire dans lequel la commande a été exécutée.
Le http.server en Python 3 fonctionnera dans le terminal, s'il n'y a pas de fichier web dans le répertoire, c'est l'index du répertoire lui-même qui sera affiché.
Vous pouvez le tester immédiatement en ouvrant l'URL suivante dans n'importe quel navigateur web sur l'ordinateur :
http://0.0.0.0:8000
Toute l'activité du serveur web, comme l'accès à des fichiers, dossiers, répertoires, etc., sera affichée en direct dans la fenêtre active du terminal Python, un peu comme si l'on suivait les journaux web sur un serveur Apache ou Nginx.
* Note importante : si vous avez installé python et python3 simultanément, vous devrez peut-être modifier légèrement la syntaxe pour faire référence à python3 et python2 ou à une autre version de python. Cela dépendra de la façon dont vous avez effectué la mise à jour vers Python 3 sur Mac, mais un exemple courant serait d'utiliser la commande "python3" à la place :
python3 -m http.server
Comme précédemment, appuyez sur "Retour" et le répertoire actif sera transformé en serveur web.
Quel est l'équivalent en Python3 de python -m CGIHTTPServer ?
Une autre astuce courante consiste à utiliser le serveur CGI (Common Gateway Interface) en Python pour les scripts CGI en python ou en perl. Ainsi, si vous devez exécuter l'équivalent en python3 de la commande "python -m CGIHTTPServer" pour les CGI, cela se passerait comme suit :
python3 -m http.server --cgi
Alternativement, si Python 3 est installé et nommé comme python, la commande serait simplement :
python -m http.server --cgi
Dans tous les cas, vous aurez besoin du drapeau -cgi pour démarrer le serveur HTTP CGI en Python 3.
Je reçois une erreur disant "/usr/bin/python" : Pas de module nommé http", et maintenant ?
Si vous voyez un "/usr/bin/python : No module named http" lorsque vous essayez d'exécuter la chaîne de commande python -m http.server alors vous n'exécutez probablement pas Python 3, ou vous utilisez la mauvaise commande pour python3 (c'est-à-dire python vs python3, selon la façon dont la version est nommée et la façon dont elle a été installée ou mise à jour sur le Mac). Il est également possible que Python ne soit pas du tout installé sur l'ordinateur, bien que cela soit moins probable pour les Macs car Python2 est installé par défaut sur Mac OS, bien que les utilisateurs doivent installer manuellement la version mise à jour de Python 3.x sur le Mac, ce qui préserve simultanément la version originale de Python 2.x. Généralement, cette opération est réalisée avec le Homebrew.
Modifiez la syntaxe comme indiqué ci-dessus, ou si vous utilisez une version antérieure de Python, essayez la commande "python -m SimpleHTTPServer" à partir de Python 2 et avant.
Bien sûr, les serveurs web simples en python ne sont pas conçus pour les environnements de production et ils sont tout simplement parfaits pour un gratte-papier rapide ou un environnement de test. Si vous voulez faire fonctionner un serveur web qui est accessible au public ou simplement plus robuste en général, vous voudrez utiliser quelque chose comme Apache ou Nginx, bien que la configuration individuelle de ces serveurs sur un Mac nécessite un certain paramétrage. Une option plus simple pour un environnement de serveur web complet sur Mac est d'utiliser MAMP, ce qui rend la configuration et le démarrage d'un environnement Apache, MySQL, PHP complet sur Mac aussi simple que possible.
Connaissez-vous d'autres trucs ou astuces intéressants sur le python ? Connaissez-vous d'autres chaînes de commande python utiles pour démarrer des serveurs http ou autres ? Partagez avec nous dans les commentaires ci-dessous !