このquestionはこれまでに質問されており、PyInstallerが正常に動作しないようです。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)
私は(IDLE以内)PYファイルを実行すると、私のアプリは完全に実行され、すべてのデータファイルをロードします。私は私のmainscript.pyファイルに次のコードを呼び出しています。私はpyInstallerの2.1(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/*.*'
誰もが私が間違っていた任意のアイデアを持っていますか?ありがとう!
** EDITここで**
はまさに私が何をしたいです。
私のメインスクリプトには、以下のようなセットアップ(インポート)があります。基本的に私はそれでmatplotlibの、ベースマップ、およびリソース・パスのすべてを持ってできるようにしたい:私はpyInstallerの2.1を使用しています
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'
。私はPython 2.7.5(32ビット)も使用しています。私のOSはWindows 8(64ビット)です。私のMatplotlibは1.3.0、Basemapは1.0.6です。 Wxpythonは2.8.12.1(Unicode)です。
私はコマンドに行きます:> pyinstaller myscript.py
。これは私が少し編集する.specファイルを生成します。私は、データファイルが実行可能内にパックされなければならないので、これは1-ファイルを実行可能になりたい
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に問題がなかった。しかし、MatplotlibとBasemapのために2.1を使用する必要があります。誰かがこのexeを完全に構築できたら、調整する必要があることを教えてください。ありがとう!
**** **** EDIT
誰もがpy2exeでこれを行う方法を見つけ出すことができれば - あまりにも素晴らしいことだという。これを一つの実行可能ファイルにすることができれば、それは価値があります!
これは問題だとは思っていませんが、Pyinstaller 2.1のバグはたくさんあるようですが、https://github.com/pyinstallerのgitバージョンを試してみてください。 –
pyinstaller.orgの1つをダウンロードしました。これはpypiから取得するのと同じですか? – mcfly
私はそう思います。どちらも2.1リリース版です。 –