2014-10-10 74 views
0

嘗試設置Bash別名以便爲Pygame運行Python腳本。 我有android.py吖,/usr/local/bin/pgs4a-0.9.6/andoid.pyBash別名不適用於Python腳本

猛砸別名:alias pyg='python /usr/local/bin/pgs4a-0.9.6/android.py'

當我運行python android.py當我在執行就好的文件夾中,但是當我做它從任何其他文件夾或使用別名,我碰到下面的錯誤。

pyg 
Traceback (most recent call last): 
    File "/usr/local/bin/pgs4a-0.9.6/android.py", line 11, in <module> 
    import interface 
ImportError: No module named interface 

有人可以向我解釋爲什麼這是?

+0

試着用一個函數來做這件事,它們更靈活;別名確實只適用於簡單的東西。引用bash人的話:「幾乎所有的目的,別名都被shell函數取代。」 – 2014-10-10 13:28:32

回答

0

試試這個:

alias pyg='PYTHONPATH=/usr/local/bin/pgs4a-0.9.6 python /usr/local/bin/pgs4a-0.9.6/android.py' 

也就是說,設置你的$ PYTHONPATH環境變量中包含的代碼的目錄。您可能需要將PYTHONPATH調整到其他位置,具體取決於您的包裝實際所在的位置。

+0

不,默認情況下,您作爲參數傳遞的腳本將其目錄解壓縮並放入'sys.path'中,而不是當前的工作目錄。但這可能是因爲'interface.py'或'interface'包在其他地方,而其他地方需要手動包含在'PYTHONPATH'中。 – 2014-10-10 08:51:41

+0

@ArminRigo:你是對的,謝謝,我更新了我的答案以反映這一點。 – 2014-10-10 09:09:30

+0

'interface.py'包含在: '/ usr/local/bin/pgs4a-0.9.6/buildlib/interface.py'中。 我試着將這個路徑添加到John所建議的別名中。 'alias pyg ='PYTHONPATH =/usr/local/bin/pgs4a-0.9.6 python /usr/local/bin/pgs4a-0.9.6/android.py python /usr/local/bin/pgs4a-0.9。 6/buildlib/interface.py'' 這是你的意思嗎? – 2014-10-11 18:41:40