Le regroupement des Données des fichiers avec PyInstaller 2.1 et MEIPASS erreur --onfichier
Ce question a été demandé avant et je n'arrive pas à obtenir mon PyInstaller pour fonctionner correctement. J'ai invoqué le code suivant dans mon mainscript.py fichier:
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)
Quand je lance le fichier py (au RALENTI), mon appli fonctionne parfaitement et charge tous les fichiers de données. Cependant, quand j'ai le bundle avec PyInstaller 2.1 (un fichier de méthode), je reçois le message d'erreur suivant après l'exe: les versions de
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/*.*'
Quelqu'un a une idée de l'endroit où je suis allé mal? Merci!
** EDIT **
Ici est exactement ce que je veux faire.
Mon script principal dispose d'une installation (importations) qui ressemblent ci-dessous. Essentiellement, je veux être en mesure d'avoir Matplotlib, Fond de carte, et le chemin d'accès aux ressources tous:
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'
Je suis en utilisant PyInstaller 2.1. Je suis également à l'aide de Python 2.7.5 (32 bits). Mon OS est Windows 8 (64 bits). Mon Matplotlib est 1.3.0 et le Fond de carte est 1.0.6. Wxpython est 2.8.12.1 (Unicode).
Je vais à la commande et à faire: > pyinstaller myscript.py
. Cela génère mon .le fichier de spécification qui j'ai légèrement modifier. Ci-dessous mon édité le fichier 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')
Je veux que ce soit un fichier exécutable, donc les fichiers de données doivent être emballés dans l'exécutable. Sur d'autres pyinstallers habitude, je n'ai pas eu de problèmes avec la MEIPASS. Cependant, j'ai besoin d'utiliser 2.1 en raison de Matplotlib et de Fond de carte. Si quelqu'un peut construire cet exe parfaitement -- pouvez-vous s'il vous plaît dites-moi ce dont j'ai besoin pour s'adapter? Merci!
****EDIT****
Si quelqu'un peut comprendre comment faire cela avec py2exe-ce serait trop grande. De toute façon que je peux obtenir ce dans un seul exécutable en vaudrait la peine!
J'ai téléchargé la droite de pyinstaller.org -- est-ce le même que celui de pypi?
Je m'attends donc. Ils sont à la fois la version 2.1 de version.
github version n'a pas aidé
OriginalL'auteur mcfly | 2013-10-29
Vous devez vous connecter pour publier un commentaire.
Je crois que je vois le problème. Vous n'êtes pas d'alimentation data_files dans votre Analyse de l'objet.
Voici comment j'ai ajouter mes fichiers de données dans mon .le fichier de spécification:
Avis je ne suis pas en utilisant COLLECT ().
Si vous extrayez le 2.1 documentation: PyInstaller Le Fichier De Spécification De L'Opération vous remarquerez que COLLECT() n'est pas utilisé --onfichier mode.
Si vous regardez l'extrait du répertoire pointé par sys._MEIPASS vous remarquerez probablement qu'avec votre fichier spec que le fichier de données n'est tout simplement pas là.
J'espère que cette aide.
OriginalL'auteur Bill Tutt