我有一个包含以下import语句的控制台脚本:
import pandas as pd
from time import time
from datetime import date, datetime, timedelta
import numpy as np
import sys
我尝试使用py2exe
为此脚本创建Windows可执行文件,但遇到了一些麻烦,因为它似乎带来了它不需要的各种事物(过度模块搜索,也许?)。
我使用以下setup.py
:
from distutils.core import setup
import py2exe
import numpy
import sys
import zmq
import os
sys.setrecursionlimit(5000)
os.environ["PATH"] = os.environ["PATH"] + \
os.path.pathsep + os.path.split(zmq.__file__)[0]
setup(
console=['script.py'],
data_files=[(".",["config_file.txt",])]
)
由于初始编译期间出现的错误,我必须包含递归行和zmq
的内容。编译适用于此示例,但会导致dist/
文件夹超过300MB ...
编译后,我可以看到它引入了matplotlib
,PIL
,PySide
,PyQt
等所有scipy
,{{{{{{ 1}},statsmodel
,tcl
,wx
等。
有没有阻止这些进口?我假设它们在某种程度上是tornado
或pandas
的可选依赖项,但它们根本不在脚本中使用,因为它只是一个控制台应用程序。
答案 0 :(得分:2)
您可以按照py2exe OptimizingSize页面中的建议手动排除您不需要的软件包。我已经复制了他们的例子,以防页面消失。
from distutils.core import setup
import py2exe
import sys; sys.argv.append('py2exe')
py2exe_options = dict(
ascii=True, # Exclude encodings
excludes=['_ssl', # Exclude _ssl
'pyreadline', 'difflib', 'doctest', 'locale',
'optparse', 'pickle', 'calendar'], # Exclude standard library
dll_excludes=['msvcr71.dll'], # Exclude msvcr71
compressed=True, # Compress library.zip
)
setup(name='<Name>',
version='1.0',
description='<Description>',
author='Ofer Schwarz',
console=['script.py'],
options={'py2exe': py2exe_options},
)