web-dev-qa-db-fra.com

PyCharm./usr/bin/python ^ M: mauvais interprète

Impossible de savoir où changer EOF dans PyCharm . Mes scripts, commençant par:

#!/usr/bin/python
# -*- coding: utf-8 -*-

Sort quelque chose comme ceci, quand j'essaye de l'exécuter comme exécutable (chmode + x):

-bash: ./main.py:/usr/bin/python ^ M: interpréteur incorrect: aucun fichier ni répertoire de ce type

Que faire et comment être?

44
woozly

Définissez le séparateur de lignes sur Unix :

Unix

30
CrazyCoder

Le problème n’est pas EOF mais EOL. Le shell voit un ^ M ainsi que la fin de la ligne et essaie donc de trouver /usr/bin/python^M.

La manière habituelle d'entrer dans cet état consiste à éditer le fichier python avec un éditeur MSDOS/Windows, puis à l'exécuter sous Unix. La solution la plus simple consiste à exécuter dos2unix sur le fichier ou à l'éditer dans un éditeur qui autorise explicitement l'enregistrement avec les fins de lignes Unix.

37
Mark

Vous pouvez trouver les réponses ici: ./configure:/bin/sh ^ M: mauvais interprète

En tant qu'utilisateur Mac OS X, je n'ai pas trouvé la commande dos2unix. Sinon, j'utilise vi/vim: :set fileformat=unix puis enregistre le fichier :wq

20
Jiangwei Yu

vous voudrez peut-être essayer dos2unix <filename>

11
gefei

Si vous utilisez Vim, entrez simplement la commande suivante:

:set fileformat=unix
10
Vitaly Isaev

Installer dos2unix: Sudo apt-get install dos2unix

et laissez-le faire la magie: dos2unix FILENAME

7
vatsa

Pour MacOS, vous pouvez l'installer via Homebrew comme ceci:

brew install dos2unix

Et ensuite faire 

dos2unix FILENAME
3
Vinozio

Semblable au poste de Jiangwei Yu. Sous UNIX/Linux, j’utilisais vi pour éditer le fichier Python. En utilisant vi, vous pouvez voir le ^ M à la fin de chaque ligne. 

Trouvez la ligne suivante /usr/bin/python^M

Appuyez sur end pour atteindre la fin de la ligne

Appuyez sur delete pour supprimer le ^ M

Pour enregistrer le fichier et quitter, tapez: :wq

Cela a fonctionné pour moi.

2
SomeGuyOnAComputer

vous pouvez essayer de faire ceci:

sed --in-place 's/^M//g' main.py

[pour taper ^ M, appuyez sur ctrl + v, ctrl + m]

1
karthik ts

Juste une question de format entre win et unix:

essayez la commande: dos2unix fileName

Après le redémarrage, ça devrait marcher

0
vivi