2012-01-17 11 views
4

저는 PyInstaller를 사용하여 두 개의 스크립트를 하나의 실행 파일로 바꾸고 그 중 하나는 다른 파일을 호출합니다. 내가 데 문제는 내가 두 스크립트를 묶어하는 방법을 알아낼하고 여전히 서로를 참조 할 수 없다 :PyInstaller에 여러 스크립트 패키징

문제를 일으키는 코드가 하나의 스크립트, script1.py에 포함되어

subprocess.call(['gksudo','python script2.py']) 

정상적으로 스크립트를 실행하면 정상적으로 작동하지만 일단 PyInstaller에 패키지되어 있으면 호출 작업을 수행하는 방법을 모르겠습니다.

답변

1

필자는 pyinstaller가이 종류의 번들링을 자체적으로 처리 할 수 ​​있다고 생각하지 않습니다. 가능하면 가능하면 구성 할 수 없었습니다. 또한

subprocess.Popen 일부 호출 ('파이썬'...)

이 완료 오히려 큰 응용 프로그램이 있습니다. 나는 마침내 작업 만든 방법이었다

  1. 은 하위 프로세스가 subprocess.call(['gksudo','./python script2.py']) 같은 다른 파이썬 호출을 수정합니다. 귀하의 경우, 스크립트의 나머지 부분에 대한 두 개의 별도의 분석, 진입 점 하나, 하나를 만듭니다

    A1 - script1.py의 분석 A2 - script2.py의 분석

  2. 만들기 단지 진입 점 스크립트에서 EXE :

  3. pyz = PYZ(a1.pure) 
    exe = EXE(pyz, 
        a1.scripts, 
        exclude_binaries=1, 
        name={name here}, 
        debug=False, 
        strip=False, 
        upx=True, 
        console=1) 
    
    는 모든 스크립트에서 수집

    coll = COLLECT(exe, 
         a1.binaries, 
         a1.zipfiles, 
         a1.datas, 
         a2.binaries, 
         a2.zipfiles, 
         a2.datas, 
        python_tree, 
         *additional_trees, 
         strip=False, 
         upx=True, 
         name={}) 
    
  4. pyinstaller가 찾지 못했던 추가 요구 사항 (모든 matplotlib, pylab 등이 있음)을 사용하여 모든 서브 프로세스 호출에 지정된 위치에 파이썬을 복사하십시오.

  5. 처음 시작 스크립트를 변경하는 시작 스크립트를 작성하십시오. 패키지를 가리키고 앱을 시작하는 데 필요한 환경 변수. 나도 더 파이썬이 설치되어 있지 가지고, 또는이있는 경우 파이썬이 설치된 컴퓨터에서 실행할 수있는 응용 프로그램을 원한다면이 모두 필요했다 지금

    export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH 
    export LD_RUN_PATH=`pwd`:$LD_RUN_PATH 
    

: 전화 디렉토리에서, 내 경우에는 무슨 일이 필요했다이었다 , 앱이 로컬 라이브러리가 아닌 배포 패키지의 모든 라이브러리를 계속 사용하는지 확인하십시오. 파이썬이 이미 타겟 머신에 설치되어 있다면, 필자는이 같은 것이 필요하다고 생각하지 않으며 처음 3 단계로 충분하다고 생각합니다.