這個question已經被問過了,我似乎無法讓我的PyInstaller正常工作。我在mainscript.py文件調用下面的代碼:用PyInstaller 2.1和MEIPASS錯誤捆綁數據文件--onefile
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
當我運行PY文件(IDLE內),我的應用程序完美和負荷運行的所有數據文件。然而,當我與PyInstaller 2.1捆綁它(一個文件的方法),我得到的exe文件後出現以下錯誤構建:
Traceback (most recent call last):
File "<string>", line 37, in <module>
WindowsError: [Error 3] The system cannot find the path
specified: 'C:\\Users\\Me\\AppData\\Local\\Temp\\_MEI188722\\eggs/*.*'
沒有人有我哪裏錯了什麼想法?謝謝!
**編輯**
這正是我想要做的。
我的主腳本有一個如下所示的設置(導入)。基本上我希望能夠有Matplotlib,底圖和資源路徑都在裏面:
import os,sys
import matplotlib
matplotlib.use('WX')
import wx
from matplotlib.backends.backend_wx import FigureCanvasWx as FigureCanvas
from matplotlib.backends.backend_wx import NavigationToolbar2Wx
from mpl_toolkits.basemap import Basemap
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
import Calculate_Distance # A personal py file of mine
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
bmap=wx.Bitmap(resource_path('test_image.png'))
print 'hello'
我使用PyInstaller 2.1。我也使用Python 2.7.5(32位)。我的操作系統是Windows 8(64位)。我的Matplotlib是1.3.0,底圖是1.0.6。 Wxpython是2.8.12.1(Unicode)。
我去指揮,做:> pyinstaller myscript.py
。這生成我的.spec文件,我稍微編輯。下面是我的編輯規範文件:
data_files = [('Calculate_Distance.py', 'C:\\Users\\Me\\Documents\\MyFolder\\Calculate_Distance.py',
'DATA'), ('test_image.png', 'C:\\Users\\Me\\Documents\\MyFolder\\test_image.png',
'DATA')]
includes = []
excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
'Tkconstants', 'Tkinter']
packages = []
dll_excludes = []
dll_includes = []
a = Analysis(['myscript.py'],
pathex=['C:\\Users\\Me\\Documents\\MyFolder','C:\\Python27\\Lib\\site-packages\\mpl_toolkits\\basemap\\*'],
hiddenimports=[],
hookspath=None,
runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries - dll_excludes + dll_includes + data_files,
name='MyApplication.exe',
debug=False,
strip=None,
upx=True,
console=True)
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=None,
upx=True,
name='MyApplication')
我想這是一個文件可執行使數據文件應在可執行文件內包裝。在其他pyinstallers我通常沒有問題與MEIPASS。但是,我需要使用2.1,因爲Matplotlib和Basemap。如果有人可以完美地構建這個exe文件 - 你能告訴我我需要調整什麼嗎?謝謝!
**** ****編輯
如果任何人都可以找出如何用py2exe做到這一點 - 這將是巨大的。任何我可以把它變成單個可執行文件的方式都是值得的!
我不確定這是否是這裏的問題,但pypi版本的Pyinstaller 2.1似乎有一堆bug,請嘗試使用https://github.com/pyinstaller上的git版本。 –
我下載了pyinstaller.org的一個 - 這和從pypi得到它一樣嗎? – mcfly
我希望如此。它們都是2.1發行版本。 –