2014-03-06 49 views
10

工作,我有以下程序:家当不python3

#!/usr/local/bin/python3 

print("Hello") 

通过终端我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' 

相反,如果我键入python3 test.py它的工作原理,我得到:

Hello

PS which python3 ---->/usr/local/bin/python3

+16

尝试'#!/ usr/bin/env python3'。 –

+3

请查看https://github.com/limetext/lime/issues/155如果没有帮助,请参阅https://www.google.co.uk/search?q=ImportError%3A+No+模块+名为+%27_sysconfigdata_m%27 – NPE

+1

@TomLeese我仍然收到错误 – zer0uno

回答

21

一般情况下,采取一些陷阱护理:

  1. 设置可执行标志上的脚本:chmod u+x test.py
  2. 尝试执行与前面的点”。 /“,所以请致电./test.py否则它可能会执行一些其他脚本从您的PATH
  3. 也确保你没有窗口里ne结尾,这似乎也阻止了shebang评估。周围有一些建议,例如in this answer,关于如何转换格式
  4. #!/usr/bin/env python3是定义shebang的最好方法,因为python二进制文件可能安装在别的地方。 env将检查PATH环境中找到二进制

编辑:以上类型的错误看起来像Windows行结尾给我。我也有他们,有不同的输出,虽然

+1

Windows行结束也是我的问题 – arod

0

您可能会看到ImportError: No module named '_sysconfigdata_m',因为由于the ubuntu bug在您的系统上损坏。

要解决它,运行./test.py,不test.py - 当前目录不在$PATH通常(由于安全原因),因此,你应该明确指定,否则该命令没有找到路径,可能会导致尝试运行/usr/lib/command-not-found导致ImportError

如果./test.py失败并出现相同的错误,则检查是否没有'\r\v\f' (unexpected whitespace) in the shebangprint(repr(open('test.py', 'rb').readline())))。如果test.py使用Windows换行符,则尝试查找'/usr/local/bin/python3\r'(注意:由于'\r\n'换行符导致的'\r')可能会失败,并可能触发该错误。