python - Shebang doesn't work with python3 -
i have following program:
#!/usr/local/bin/python3 print("hello")
via terminal test.py
, 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() # 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 _sysconfigdata import build_time_vars file "/usr/lib/python3.3/_sysconfigdata.py", line 6, in <module> _sysconfigdata_m import * importerror: no module named '_sysconfigdata_m'
instead if type python3 test.py
works, get:
hello
p.s. which python3
----> /usr/local/bin/python3
generally, take care of pitfalls:
- set executable flag on script:
chmod u+x test.py
- try execute preceding dot "./", call
./test.py
otherwise might execute other script withinpath
- also make sure you don't have windows line endings, seems prevent shebang evaluation, too. there suggestions around, e.g. in answer, on how convert format
#!/usr/bin/env python3
best way define shebang, since python binary may installed somewhere else.env
inspectpath
environment find binary
edit: above kind of error looks windows line endings me. i've had them, too, different output though
Comments
Post a Comment