2014-01-26 2 views
7

py2exe을 Python 프로그램에 사용하면 실행 파일을 얻을 수 있지만 tcl\ 폴더도 생성됩니다.Numpy를 사용하면 py2exe를 사용할 때 tcl 폴더가 생성됩니다.

tcl/tk을 전혀 사용하지 않아서 내 코드에 tkinter과 관련된 내용이 없으므로 이상합니다.

numpy을 가져 오는 것이이 tcl\ 폴더를 추가해야합니까? 어떻게 이런 일이 발생하지 않도록?


test.py

import numpy 

print 'hello' 

py2exe에 코드

의존성을 결정하는 데 사용되는 모듈 "혼동"도착
from distutils.core import setup 
import py2exe 

setup(script_args = ['py2exe'], windows=[{'script':'test.py'}], options = {'py2exe': {'compressed':1,'bundle_files': 1}}, zipfile = None) 

답변

11

Modulefinder 및 t 당신은 Tkinter가 필요합니다. 우리가 Tkinter가 가져온 것을 알고 그래서 지금

Name      File 
    ----      ---- 
m BaseHTTPServer   C:\Python27\lib\BaseHTTPServer.py 
m ConfigParser    C:\Python27\lib\ConfigParser.py 
m FixTk      C:\Python27\lib\lib-tk\FixTk.py 
m SocketServer    C:\Python27\lib\SocketServer.py 
m StringIO     C:\Python27\lib\StringIO.py 
m Tkconstants    C:\Python27\lib\lib-tk\Tkconstants.py 
m Tkinter     C:\Python27\lib\lib-tk\Tkinter.py 
m UserDict     C:\Python27\lib\UserDict.py 
m _LWPCookieJar    C:\Python27\lib\_LWPCookieJar.py 
... 

을하지만은 다음과 같습니다

당신이 스크립트 다음 실행하면

...

from modulefinder import ModuleFinder 

finder = ModuleFinder() 
finder.run_script('test.py') 
print finder.report() 

... 당신이 볼 수 발견 모듈 (단축) 별로 유용하지 않습니다. 이 보고서는 문제가되는 모듈이 무엇인지 보여주지 않습니다. 그러나, 충분한 정보 py2exe에 스크립트를 수정하여 Tkinter을 제외하는 것입니다 :

from distutils.core import setup 
import py2exe 

setup(script_args = ['py2exe'], 
     windows=[{'script':'test.py'}], 
     options = {'py2exe': {'compressed':1, 
          'bundle_files': 1, 
          'excludes': ['Tkconstants', 'Tkinter'] 
          }, 
       }, 
     zipfile = None) 

보통 그 충분하다. 문제가되는 모듈이 무엇인지 여전히 궁금하다면 ModuleFinder은 별 도움이되지 않습니다. 그러나 modulegraph과 그 종속성 altgraph을 설치할 수 있습니다. 그런 다음 스크립트를 실행하고 HTML 파일로 출력을 리디렉션 할 수 있습니다 : 답변

numpy -> numpy.lib -> numpy.lib.utils -> pydoc -> Tkinter 
+0

감사 :

import modulegraph.modulegraph m = modulegraph.modulegraph.ModuleGraph() m.run_script("test.py") m.create_xref() 

당신은 당신이 찾을 의존성 그래프를 얻을 것이다. 좀 더 일반적으로 : *'Tkinter'를 사용하여 부드러운 *을 사용하는 경우에도'py2exe'를 사용할 때'tcl /'폴더를 피할 수 있다고 생각합니까? – Basj

+0

"bundle to one exe"옵션이없는'py2exe'가 아니라'cx_freeze'를 사용하는 것이 확실하지 않습니다. 이론적으로 당신은 모든 파일을 압축 할 수 있어야하며,'tkinter '가 필요로하는'/ tcl' 디렉토리도 exe 안에 압축 할 수 있어야합니다. – Fenikso

+1

'py2exe'에'bundle_files' 옵션을 사용할 수 있습니다. 도움이 될 수 있습니다. – Fenikso