J'ai le programme suivant:
#!/usr/local/bin/python3
print("Hello")
Par le terminal, je fais test.py
et je reçois:
Traceback (most recent call last):
File "/usr/lib/python3.3/site.py", line 629, in <module>
main()
File "/usr/lib/python3.3/site.py", line 614, in main
known_paths = addusersitepackages(known_paths)
File "/usr/lib/python3.3/site.py", line 284, in addusersitepackages
user_site = getusersitepackages()
File "/usr/lib/python3.3/site.py", line 260, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/usr/lib/python3.3/site.py", line 250, in getuserbase
USER_BASE = get_config_var('userbase')
File "/usr/lib/python3.3/sysconfig.py", line 610, in get_config_var
return get_config_vars().get(name)
File "/usr/lib/python3.3/sysconfig.py", line 560, in get_config_vars
_init_posix(_CONFIG_VARS)
File "/usr/lib/python3.3/sysconfig.py", line 432, in _init_posix
from _sysconfigdata import build_time_vars
File "/usr/lib/python3.3/_sysconfigdata.py", line 6, in <module>
from _sysconfigdata_m import *
ImportError: No module named '_sysconfigdata_m'
Au lieu de cela si je tape python3 test.py
cela fonctionne, je reçois:
Hello
P.S. which python3
----> /usr/local/bin/python3
En règle générale, prenez soin de certains pièges:
chmod u+x test.py
./test.py
sinon il pourrait exécuter un autre script à partir de votre PATH
assurez-vous également que vous n'avez pas de fins de ligne Windows, cela semble également empêcher l'évaluation de Shebang. Il y a quelques suggestions autour, par exemple. dans cette réponse , sur la façon de convertir le format.
Si python3 test.py
fonctionne, les fins de ligne de Windows sont probablement votre problème.
#!/usr/bin/env python3
est le meilleur moyen de définir Shebang, car le binaire python peut être installé ailleurs. env
inspectera l'environnement PATH
pour trouver le binaireEDIT: Le type d'erreur de l'OP ressemble à des fins de lignes Windows pour moi. Je les ai eu aussi avec des résultats différents
Vous pourriez voir ImportError: No module named '_sysconfigdata_m'
parce que /usr/lib/command-not-found
est endommagé sur votre système à cause de le bogue ubuntu .
Pour résoudre ce problème, exécutez ./test.py
et non pas test.py
- le répertoire actuel ne se trouve généralement pas dans $PATH
(pour des raisons de sécurité) et vous devez donc spécifier explicitement le chemin, sinon la commande est introuvable, ce qui peut entraîner l’exécution de /usr/lib/command-not-found
. la ImportError
.
Si ./test.py
échoue avec la même erreur, vérifiez qu'il n'y a pas de '\r\v\f'
(espaces blancs inattendus) dans Shebang (print(repr(open('test.py', 'rb').readline()))
). Si test.py
utilise des sauts de ligne Windows, la tentative de recherche de '/usr/local/bin/python3\r'
(remarque: '\r'
en raison de '\r\n'
newline) est susceptible d’échouer et de provoquer l’erreur.