我在Windows 7,64位上使用最新版本的Anaconda Python(3.4)和最新版本的py2exe(它應該支持Python 3.3和3.4)。py2exe不包括來自「includes」的模塊
這裏是我使用的py2exe腳本:
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {
'py2exe': {
'bundle_files': 2,
'optimize': 2,
'compressed': True,
}
},
windows = [{'script': "ImageSound GUI.py"}],
data_files = [('images',['c:/Users/EvilDragon/Documents/GitHub/ImageSound/mario.png'])]
)
下面是py2exe返回輸出:
84 missing Modules
------------------
? Cookie imported from requests.compat, tornado.httputil, tornado.web
? IPython.current_nbformat imported from IPython.nbformat.validator
? Image imported from scipy.misc.pilutil
? ImageFilter imported from scipy.misc.pilutil
? OpenGL imported from IPython.lib.inputhook, IPython.lib.inputhookglut
? PIL._imagingagg imported from PIL.ImageDraw
? PyQt5 imported from IPython.external.qt_loaders, PIL.ImageQt, matplotlib.pyplot
? PySide imported from IPython.external.qt_loaders, PIL.ImageQt
? Queue imported from IPython.kernel.blocking.channels, IPython.kernel.blocking.client, IPython.kernel.inprocess.blocking, IPython.kernel.inprocess.socket, IPython.kernel.manager, requests.packages.urllib3.connectionpool, zmq.eventloop.zmqstream
? SocketServer imported from zmq.ssh.forward
? UserDict imported from pytz.lazy
? _abcoll imported from requests.packages.urllib3.packages.ordered_dict
? _grabscreen imported from PIL.ImageGrab
? _imaging_gif imported from PIL.GifImagePlugin
? _subprocess imported from IPython.kernel.launcher, IPython.kernel.zmq.parentpoller
? _util imported from PIL.ImageCms
? appnope imported from IPython.external.appnope
? backports imported from requests.packages.urllib3.packages.ssl_match_hostname, setuptools.ssl_support, tornado.netutil
? cloud imported from IPython.utils.pickleutil
? cookielib imported from requests.compat
? coverage imported from IPython.testing.iptestcontroller
? dill imported from IPython.utils.pickleutil
? gi imported from IPython.kernel.zmq.gui.gtk3embed, IPython.lib.inputhookgtk3
? glut_support imported from IPython.lib.inputhook
? gobject imported from IPython.kernel.zmq.gui.gtkembed, IPython.lib.inputhookgtk, matplotlib.pyplot
? gtk imported from IPython.kernel.zmq.gui.gtkembed, IPython.lib.inputhook, IPython.lib.inputhookgtk
? isodate imported from jsonschema._format
? matplotlib.backends._macosx imported from matplotlib.backends.backend_macosx
? mklfft imported from numpy.fft
? monotime imported from tornado.platform.auto, zmq.eventloop.minitornado.platform.auto
? mpl_toolkits.natgrid imported from matplotlib.mlab
? multiprocessing.SimpleQueue imported from concurrent.futures.process
? ndg imported from requests.packages.urllib3.contrib.pyopenssl
? netifaces imported from IPython.utils.localinterfaces
? packaging imported from pkg_resources
? paramiko imported from zmq.ssh.tunnel
? path imported from IPython.external.path
? pexpect imported from IPython.external.pexpect, zmq.ssh.tunnel
? pyczmq imported from zmq.sugar.context
? pydb imported from IPython.core.debugger, IPython.core.interactiveshell
? pyglet imported from IPython.lib.inputhookpyglet
? pysqlite2 imported from IPython.core.history
? pywintypes imported from -
? repr imported from IPython.core.debugger
? resource imported from IPython.external.pexpect._pexpect, IPython.utils.timing
? rfc3987 imported from jsonschema._format
? scikits imported from scipy.sparse.linalg.dsolve.linsolve
? scipy.arange imported from scipy.sparse.linalg.isolve.minres
? scipy.ones imported from scipy.sparse.linalg.isolve.minres
? setuptools_svn imported from setuptools.command.egg_info
? simplegeneric imported from IPython.external.simplegeneric
? simplejson imported from requests.compat
? singledispatch imported from tornado.gen
? strict_rfc3339 imported from jsonschema._format
? unittest._WritelnDecorator imported from nose.plugins.multiprocess
? urllib.getproxies imported from requests.compat
? urllib.pathname2url imported from setuptools.compat
? urllib.proxy_bypass imported from requests.compat
? urllib.quote imported from matplotlib.textpath, requests.compat
? urllib.quote_plus imported from requests.compat
? urllib.splittag imported from setuptools.compat
? urllib.unquote imported from jsonschema.compat, requests.compat
? urllib.unquote_plus imported from requests.compat
? urllib.url2pathname imported from setuptools.compat
? urllib.urlencode imported from IPython.lib.display, requests.compat, requests.packages.urllib3.request, tornado.httputil, tornado.web
? urllib.urlopen imported from IPython.core.interactiveshell, IPython.utils.openpy
? urllib.urlretrieve imported from IPython.core.extensions, IPython.html.nbextensions
? webcolors imported from jsonschema._format
? win32api imported from IPython.utils._process_win32, distutils.msvccompiler, platform, win32evtlogutil
? win32com imported from setuptools.sandbox
? wincertstore imported from setuptools.ssl_support
? zmq.EAGAIN imported from zmq.error
? zmq.ETERM imported from zmq.devices.basedevice, zmq.error, zmq.eventloop.ioloop
? zmq.PUB imported from zmq.devices.monitoredqueuedevice
? zmq.QUEUE imported from zmq.devices.basedevice
? zmq.backend.Context imported from zmq.sugar.context
? zmq.backend.Frame imported from zmq.sugar.frame, zmq.sugar.tracker
? zmq.backend.Socket imported from zmq.sugar.socket
? zmq.backend.constants imported from zmq.sugar.constants
? zmq.backend.strerror imported from zmq.error
? zmq.backend.zmq_errno imported from zmq.error
? zmq.backend.zmq_poll imported from zmq.sugar.poll
? zmq.backend.zmq_version_info imported from zmq.sugar.version
? zmq.device imported from zmq.devices, zmq.devices.basedevice
5 submodules that appear to be missing, but could also be global names in the parent package
---------------------------------------------------------------------------------------------
? numpy.conj imported from scipy.io.mmio, scipy.linalg.decomp
? numpy.log2 imported from scipy.sparse.linalg.matfuncs
? scipy.spatial.cKDTree imported from scipy.spatial
? scipy.special.ellipeinc imported from scipy.special
? scipy.special.ellipkinc imported from scipy.special
Building 'dist\ImageSound GUI.exe'.
Building shared code archive 'dist\library.zip'.
Copy c:\program files\anaconda\python34.dll to dist
Copy DLL C:\Program Files\Anaconda\DLLs\tcl86t.dll to dist
Copy DLL C:\Program Files\Anaconda\DLLs\tk86t.dll to dist
Copy DLL C:\Program Files\Anaconda\lib\site-packages\numpy\core\libiomp5md.dll to dist
Copy DLL C:\Program Files\Anaconda\DLLs\sqlite3.dll to dist
Copy DLL C:\Program Files\Anaconda\lib\site-packages\PyQt4\QtCore4.dll to dist
Copy DLL C:\Program Files\Anaconda\lib\site-packages\portaudio_x64.dll to dist
Copy DLL C:\Program Files\Anaconda\lib\site-packages\PyQt4\QtSvg4.dll to dist
Copy DLL C:\Program Files\Anaconda\lib\site-packages\PyQt4\QtGui4.dll to dist
然後,當我嘗試運行我的EXE我得到這個回溯:
Traceback (most recent call last):
File "ImageSound.py", line 5, in <module>
File "C:\Program Files\Anaconda\lib\site-packages\zipextimporter.py", line 116, in load_module
raise zipimport.ZipImportError("can't find module %s" % fullname)
zipimport.ZipImportError: can't find module skimage.draw
即使我將skimage.draw添加到包含中,也不會改變......還有追溯更改,如果我設置bun dle_files以3:
Traceback (most recent call last):
File "ImageSound.py", line 5, in <module>
File "C:\Program Files\Anaconda\lib\site-packages\skimage\draw\__init__.py", line 1, in <module>
from .draw import circle, ellipse, set_color
File "C:\Program Files\Anaconda\lib\site-packages\skimage\draw\draw.py", line 3, in <module>
from ._draw import _coords_inside_image
File "<loader>", line 10, in <module>
File "<loader>", line 8, in __load
ImportError: (No module named 'skimage._shared') 'C:\\Users\\EvilDragon\\Documents\\GitHub\\ImageSound\\dist\\skimage.draw._draw.pyd'
這是完全超越我,因爲它指向字節碼,但是我從skimage.draw使用的唯一功能是線,這就是它!在這一點上我完全困惑不解。
編輯:我試着運行py2exe與各種包括和排除,以便它試圖遞歸找到它所需要的,但無濟於事。它會始終報告缺少skimage.draw或沒有名爲skimage._shared的模塊。沒有任何意義,他們是正確的,在我的lib/site-packages /文件夾!
另外任何有興趣給它一個py2exe的鏡頭可以檢查出這裏的程序代碼:https://github.com/mkruselj/ImageSound。必要的庫:numpy,scipy,skimage,PIL,pyaudio。
以下是我使用的兩個.py文件包含的所有內容(一個.py文件導入到另一個文件中)。
ImageSound.py:
from tkinter import *
from tkinter import filedialog, ttk, messagebox
from PIL import Image, ImageTk
from numpy import array
from skimage.draw import line as skline
import time
import DSP # this is the second .py file
DSP.py:
from numpy import linspace, sin, pi, int16, array, append, multiply
from scipy.io.wavfile import write as writewav
from scipy.interpolate import UnivariateSpline as interpolate
from math import sqrt
import pyaudio
感謝您的見解!
編輯#2:cx_freeze和PyInstaller也不想合作。我試着用nuitka直接編譯東西,但是這更糟,因爲它需要安裝py2和py3以及C++編譯器。我失敗了。
對於scipy包含錯誤嘗試添加以下行到您的包括:'''''scipy.sparse.csgraph._validation'''它似乎是一個常見的錯誤。 –
將嘗試並報告回來!謝謝,弗蘭! :) –
不幸的是,沒有工作,仍然是相同的缺失模塊報告:( –