I have the following program:
#!/usr/local/bin/python3
print("Hello")
Via terminal I do test.py
and I get:
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'
Instead if I type python3 test.py
it works, I get:
Hello
P.S. which python3
----> /usr/local/bin/python3
Generally, take care of some pitfalls:
set the executable flag on the script: chmod u+x test.py
try to execute with a preceding dot "./", so call ./test.py
otherwise it might execute some other script from within your PATH
also make sure you don't have windows line endings, this seems to prevent the shebang evaluation, too. There are some suggestions around, e.g. in this answer, on how to convert the format.
If python3 test.py
works, then the windows line endings are probably your problem.
#!/usr/bin/env python3
is the best way to define the shebang (i.e. use this as first line of your script), since the python binary may be installed somewhere else. env
will inspect the PATH
environment to find the binary
As @ShaileshKumarMPatel has pointed out in the comments here, make sure, there's no wrong line beginnings (color characters etc)
EDIT: The OP's kind of error looks like windows line endings to me. I've had them, too, with different output though