2014-03-06 53 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')可能會失敗,並可能觸發該錯誤。