2011-09-05 9 views
1

에게 일부 시스템/소프트웨어 정보를 사용하여 만든 파이썬 맥 응용 프로그램에 의해 발견되지 명령을CVS가 시작하기 전에 py2app

OS : 맥 OS X 10.7.1

파이썬 : 활동 파이썬 2.7.2.5

wxPython : wxPython2.9-osx-2.9.1.1-cocoa-py2.7

Mac 플랫폼에서 cvs 및 svn의 사용 가능성을 테스트하는 작은 wxpython 기반 Mac 응용 프로그램이 있습니다. 다음은 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() 

다음은 '실행'이라는 버튼이 하나있는이 간단한 GUI의 스크린 샷입니다. 는 OnRun 방법을 실행하고 사용자의 홈 디렉토리에 'cvs_test'라는 파일에 두 개의 명령 'CVS'와 'svn의 도움'의 출력을 저장 '실행'을 눌러에

screen shot of the simple cvs test app with a single 'Run' button

. 명령 줄에서 파이썬 인터프리터를 사용하여이 코드를 실행하면 두 명령의 출력이 텍스트 파일에 침입합니다. cvs 및 svn 명령이 모두 인식되며 cvs_test 파일의 출력이 예상 한 것과 같습니다.

""" 
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']) 

맥 응용 프로그램이 절대적으로 잘 만들어 : 나는 다음과 같은 스크립트를 py2app를 사용하여 맥 응용 프로그램을 만들 때

이제 문제입니다. 나는 '실행'버튼을 맥 응용 프로그램을 열고 칠 때, 그것을 만든 cvs_test 파일에, 그것은 말한다 :

"SH : CVS를 : 명령을을 찾을 수 없습니다"

맥 응용 프로그램은 분명히 동일한 스크립트를 실행하고 있지만 cvs 명령을 찾을 수 없습니다. 내 홈 디렉토리에서

, 다음 내 .profile 파일의 내용이다 : 나는 애플 포럼에 게시 된 트릭을 수행하여 경로 '/ 개발자는/usr/빈'을 추가

export TERM="xterm" 
export PATH='/Developer/usr/bin':$PATH 
export PATH='/usr/local/bin':$PATH 

( click here) OS X Lion에서 cvs 문제를 해결할 수 있습니다.

python 스크립트가 명령 줄에서 실행될 때 cvs를 식별하고 같은 스크립트가 컴파일 된 Mac 응용 프로그램으로 실행될 때 식별하지 못하게하는 원인은 무엇입니까?

이 질문은 나를 죽이고 있습니다. 내 bash와 sh는 터미널에서 실행할 때 cvs를 찾을 수 있지만 Mac 응용 프로그램은 실행할 수 없습니다. 어떤 제안이라도 대단히 감사하겠습니다. 다음을 추가

답변

2

Finder/Dock (즉, 터미널이 아닌)에서 OSX GUI 응용 프로그램을 실행할 때 새 셸이 시작되지 않으므로 .profile은 읽히지 않습니다.

당신은 또한 환경을 설정할 수 있습니다 ~/.MacOS/environment.plist로 Apple doc

당에서 환경 변수를 설정 (예 : 경로에 추가)으로 또는 명시 적으로 CVS의 전체 경로를 사용하고에 svn을 할 수 있습니다 파이썬 스크립트

+0

그러나 로그 아웃했다가 다시 로그인하면 .profile의 새 설정을 선택할 수 있습니다. –

+0

@Mark. 맞습니다. OSX GUI 응용 프로그램은 .profile을 읽지 않습니다. Property List Editor를 사용하여 ~/.MacOS/environment.plist 파일을 편집하고 Mac을 다시 시작했습니다 (다시 시작해야 함). 다시 시작하지 않고 GUI 응용 프로그램을 사용하려고 시도하면 인식하지 못합니다. 하지만 이제 다시 시작한 후 GUI 응용 프로그램을 실행하면 cvs를 인식하고 예상되는 출력을 cvs_test 파일에 인쇄합니다. 도와 줘서 고마워. :) – user699540

1

보십시오 : 귀하의 응용 프로그램에

import os 
print os.environ["PATH"] 

. 필자는 명령 행에서 파이썬 코드를 실행할 때와 같은 경로로 실행되지 않는다고 생각한다.

경로가 예상 한 경로가 아닌 것으로 판명되면 os.enviorn [ "PATH"]에 app/usr/local/bin을 추가 할 수 있습니다. 앱용 도구가 필요하면이 방법이 좋은 해결책이 될 수 있습니다.

+0

당신 말이 맞아요. 스크립트에 의해 인쇄 된 경로는/usr/local/bin :/Developer/usr/bin :/usr/bin :/bin :/usr/sbin :/sbin :/usr/local/bin :/usr/X11/bin :/usr/local/mysql/bin :/opt/local/bin :/usr/local/git/bin. 그러나/usr/bin :/usr/sbin :/sbin :/usr/local/bin :/usr/X11/bin :/opt/local/bin : local/git/bin. 그래서 분명히 '/ Developer/usr/bin'경로를 사용하지 않습니다. 올바른 경로를 사용하려면 어떻게해야합니까? – user699540

+0

몇 줄을 추가했지만 이미 해결책을 찾은 것 같습니다. –

관련 문제