linux执行 python3代码

我有以下程序:

#!/usr/local/bin/python3

print("Hello")
通过终端我做test.py,我得到:

Traceback (most recent call last):
File "/usr/lib/python3.3/site.py", line 629, in
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
from _sysconfigdata_m import *
ImportError: No module named '_sysconfigdata_m'
相反,如果我输入python3 test.py它有效,我会得到:

Hello

附which python3言---->/usr/local/bin/python3

已邀请:
一般来说,要注意一些陷阱:

在脚本上设置可执行标志:chmod u+x test.py

尝试使用前面的点“./”./test.py执行,因此调用否则它可能会从您的内部执行一些其他脚本PATH

还要确保您没有 windows 行尾,这似乎也阻止了 shebang 评估。有一些关于如何转换格式的建议,例如在这个答案中。

如果python3 test.py有效,那么 Windows 行尾可能是您的问题。

#!/usr/bin/env python3是定义shebang 的最佳方式(即使用它作为脚本的第一行),因为python 二进制文件可能安装在其他地方。env将检查PATH环境以找到二进制文件

正如@ShaileshKumarMPatel 在此处的评论中指出的那样,请确保没有错误的行开头(颜色字符等)

编辑:OP 的错误类型对我来说看起来像 windows 行结尾。我也有它们,但输出不同

要回复问题请先登录注册