某些系統/軟件信息在開始之前創建的:CVS命令不受Python的Mac應用程序使用發現py2app
操作系統:Mac OS X 10.7.1
的Python:Python的主動2.7.2.5
wxPython:wxPython2.9-osx-2.9.1.1-cocoa-py2.7
我有一個小的基於wxpython的Mac應用程序,它只是在Mac平臺上測試cvs和svn的可用性。這是在其Mac應用程序是基於Python代碼:
import wx
import commands,os
ID_RUN_BUTTON=1
class Frame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(100, 100),style=wx.MINIMIZE_BOX | wx.CLOSE_BOX)
self.run_button=wx.Button(self,ID_RUN_BUTTON,label='Run')
self.Bind(wx.EVT_BUTTON, self.OnRun,id=ID_RUN_BUTTON)
self.Centre()
self.Show()
def OnRun(self,evt):
home_dir=os.path.expanduser("~")
a=commands.getoutput("cvs")
b=commands.getoutput("svn help")
f=open('%s/cvs_test' % (home_dir),'w')
f.write(a)
f.write('\n')
f.write(b)
f.close()
if __name__ == '__main__':
app = wx.App(redirect=False)
frame = Frame(None, -1, 'CVS Tester')
app.MainLoop()
下面是這個簡單的界面的屏幕截圖與所謂的「運行」一個鍵。
在按下「運行」它執行OnRun方法,它的兩個命令「CVS」和「svn help」以輸出保存到一個用戶的主目錄下名爲「cvs_test」文件。當我在命令行上使用python解釋器運行此代碼時,這兩個命令的輸出都會吐入一個文本文件中。 cvs和svn命令都被識別,文件cvs_test中的輸出如預期的那樣。
現在的問題是,當我創建使用py2app與下面的腳本在Mac應用程序:
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['cvs_test.py']
DATA_FILES = [('icons',['./icons/ark-2.png'])]
OPTIONS = {'iconfile': './icons/ark-2.icns'}
setup(app=APP,data_files=DATA_FILES,options={'py2app': OPTIONS},setup_requires=['py2app'])
的Mac應用程序創建精美絕倫。但是,當我打開Mac應用程序並點擊「運行」按鈕,在其創建的cvs_test文件,它說:
「SH:CVS:找不到命令」
的Mac應用程序顯然是運行相同的腳本,但找不到cvs命令。
在我的主目錄,以下是我的.profile文件的內容:
export TERM="xterm"
export PATH='/Developer/usr/bin':$PATH
export PATH='/usr/local/bin':$PATH
我按照張貼在蘋果論壇上招添加路徑「/開發人員的/ usr/bin中」(click here)解決OS X Lion上的cvs問題。
什麼原因導致python腳本在從命令行運行時識別cvs,並且在編譯的Mac應用程序運行同一腳本時未識別它?
這個問題殺了我。我的bash和他們兩個都可以在終端上運行時找到cvs,但是Mac應用不能。任何建議將不勝感激。
然而,退出並重新將允許在.profile中新設置被拾起.. –
@馬克。那就對了。 OSX GUI應用程序不會讀取.profile。我編輯使用屬性列表編輯器的〜/ .MacOS/environment.plist文件並重新啓動MAC(重新啓動被要求)。不重新啓動,如果我嘗試使用GUI應用程序,它不會識別。但是,現在重新啓動後,當我運行GUI應用程序時,它會識別cvs並將預期的輸出打印到cvs_test文件。非常感謝您的幫助 :) – user699540