2012-01-14 2 views
3

내 Cocoa 응용 프로그램에서는 easy_install을 사용하여 사용자 시스템에 Python 명령 행 도구를 설치해야합니다. 이상적으로, 나는 하나의 bash 파일을 실행할 수있는 내 응용 프로그램과 함께 묶고 싶을 것이다. 그러나 내가 아는 한 이것은 불가능합니다. 왜냐하면 패키지는 Python의 "site-packages"디렉토리에 설치되기 때문입니다.easy_install을 사용하여 Cocoa 응용 프로그램의 번들 python 도구

이러한 파일의 "패키지"를 만드는 방법이 있습니까? 그렇지 않은 경우 easy_install 설치를 어떻게 실행해야합니까? .pkg 파일을 필요에 따라 열 수있는 앱과 함께 번들 싶었지만이 설치 패키지에서 스크립트 만 실행할 수는 없었습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있으시면 기쁩니다.

종류의 안부 파비안

+0

응용 프로그램과 함께 명령 줄 도구를 제공 할 수 있습니까? 누가 명령 행 도구를 사용할 것인가? 응용 프로그램 만, 아니면 사용자가 혼자서 할 수 있습니까? – EOL

+0

응용 프로그램 자체. –

답변

4

전용 응용 프로그램 (대신 도구의 사용자가 직접 사용)을 사용할 경우 당신은 당신의 응용 프로그램과 명령 행 도구를 제공하고, 할 수 있다면, 당신이 직접 할 수 다음과 같이 응용 프로그램에 명령 줄 도구를 포함하고 사용하십시오.

  • 응용 프로그램 디렉터리의 어딘가에 명령 줄 도구를 저장하십시오.
  • 필요한 모듈을 찾을 수 있도록 Python 모듈 검색 경로를 설정하십시오. 파이썬 프로그램를 기준으로 파이썬 모듈 검색 경로 설정

가 상대 경로는 .. 상위 디렉토리 대회로 기록 될 수

import sys 
import os.path as path 

sys.path.append(path.join(path.dirname(__file__), 
    '<relative path between this program and the command line tool module>')) 

import <command line tool module> 

수행 할 수 있습니다 :이 유닉스에 모두 (포함 작동 Mac OS X) 및 Windows.

PS : 많은 프로그램은 명령 행 도구 모듈에 액세스해야하는 경우, 다음을 수행 할 수 있습니다 하나는 프로그램의 각 위의 코드를 넣어

  • ,

  • 또는, 당신이 경우 모듈을 my_runner으로 만들고 프록시로 사용할 수 있습니다. 모듈 my_runner은 다음과 같이 원래의 runner 함수를 모두 가져옵니다.

    import sys 
    import os.path as path 
    
    sys.path.append(path.join(path.dirname(__file__), 
        '<relative path between this program and the original ino module>')) 
    
    from ino.runner import * 
    

    당신은 단순히 자신의 my_runner 모듈의 "정상적인"수입 수행하여 프록시를 통해 모든 프로그램에서 원래 주자 모듈을 사용할 수 있습니다

    from my_runner import main 
    

PPS : 작업 디렉토리가 나중에 변경 되더라도 더 강력한 경로가 필요하면 possi가됩니다. 잠재적으로 로컬 경로를 절대 경로로 변환하려면 path.join(path.abspath(path.dirname(__file__)),…을 사용하십시오.

+0

나는 그것이 내가 필요한 것이라고 생각한다. 명확한 설명을 위해 : 어디에서 가져 오기 경로를 변경해야합니까? 필자는이 import 문과 함께 약 10 개의 .py 파일과 하나의 명령 줄 인터페이스를 가지고 있습니다. "ino.runner import main"정확히 무엇을 변경해야합니까? 고마워요! –

+0

몇 가지 종속성이 있습니다. 앱과 함께 제공해야합니다. 네가 설명했던 것과 똑같은 일이 여기에서도 가능합니까? 도움이된다면 python 도구를 다음에서 다운로드 할 수 있습니다. http://pypi.python.org/packages/source/i/ino/ino-0.3.1.tar.gz#md5=ed26bba45c71528f7efd3b0998caafaa –

+0

의견을 보내 주셔서 감사합니다. . 유지 보수가 간단한 솔루션을 제공하는 PS를 추가했습니다. – EOL

2

EOL 덕분에 지금 작업하게되었습니다. 이 솔루션에는 아래에 나열된 몇 가지 단계가 포함되었습니다..egg 파일을 패키징과 같은를 참조하여

  1. 제거 종속성 :

    import sys 
    import os.path as path 
    sys.path.append(path.join(path.dirname(__file__), '<relative path to .egg file>')) 
    
    from dependency import something 
    
  2. setup.py

  3. 참조 결과 .egg 파일을 사용하여 현재 독립적 인 파이썬 모듈에서 하나의 .egg 파일을 빌드 명령 줄 도구에서 1.
  4. .egg 파일과 코코아 응용 프로그램의 명령 줄 도구를 번들로 묶습니다.

나는 이것이 누군가에게 유용하게되기를 바랍니다.

관련 문제