zer*_*uno 20 python shebang python-3.x
我有以下程序:
#!/usr/local/bin/python3
print("Hello")
Run Code Online (Sandbox Code Playgroud)
通过终端我做test.py
,我得到:
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'
Run Code Online (Sandbox Code Playgroud)
相反,如果我输入python3 test.py
它,我得到:
Hello
PS which python3
---->/usr/local/bin/python3
Dom*_*Cat 46
一般来说,要注意一些陷阱:
chmod u+x test.py
./test.py
执行,否则调用它可能会从你的内部执行一些其他脚本PATH
还要确保你没有windows line endings,这似乎也阻止了shebang评估.关于如何转换格式,有一些建议,例如在这个答案中.
如果python3 test.py
有效,那么windows行结尾可能是你的问题.
#!/usr/bin/env python3
是定义shebang的最佳方法,因为python二进制文件可能安装在其他地方.env
将检查PATH
环境以找到二进制文件编辑:OP的那种错误看起来像Windows行结束给我.我也有它们,虽然有不同的输出
小智 5
如果 python 脚本与 Windows 机器接触过,那么值得尝试清理以下行结尾:
$ dos2unix programmer.py
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37866 次 |
最近记录: |