我正在尝试使用PyInstaller构建一个单文件EXE,它包含一个图像和一个图标.我无法为我的生活而努力--onefile.
如果我这样做--onedir,一切工作都很顺利.当我使用时--onefile,它找不到引用的附加文件(运行编译的EXE时).它找到了DLL和其他一切都很好,只是不是两个图像.
我查看了运行EXE时生成的temp-dir(\Temp\_MEI95642\例如),文件确实在那里.当我将EXE放入该临时目录时,它会找到它们.非常困惑.
这是我添加到.spec文件中的内容
a.datas += [('images/icon.ico', 'D:\\[workspace]\\App\\src\\images\\icon.ico', 'DATA'),
('images/loaderani.gif','D:\\[workspace]\\App\\src\\images\\loaderani.gif','DATA')]
Run Code Online (Sandbox Code Playgroud)
我应该补充一点,我也试过不把它们放在子文件夹中,没有什么区别.
编辑: 由于PyInstaller更新,标记的较新答案正确.
我一直在尝试制作一个可执行文件,而我正在接近.请不要建议我使用PyInstaller - 我已经尝试过这条路线,在这里询问,并且已经订购了门票.它很接近但不太合适.我现在正在尝试py2exe,我也非常接近.在pyinstaller中,我能够创建资源文件(使用包含的文件构建可执行文件 - 然后我可以在临时文件夹中访问这些文件).
我想对py2exe做同样的事情.我有一个可执行文件,但有五个额外的文件夹(地图,mpl-data,data,pics和tcl).我已经看到了这个问题,但似乎无法理解它,也无法让它发挥作用.在我的主py文件中,我正在使用PersistentDict(filepath)哪个是我需要文件路径的地方.
我的问题分为两部分:1.如何将文件(下面的数据文件)打包到可执行文件中.2.如何在我的代码中访问这些文件并返回它们的路径(如字符串),例如/temp/file1.jpg.
这是我的py2exe安装文件的代码 - 注意我有matplotlib,必须在我的可执行文件中正确包含mpl-data.谢谢!
from distutils.core import setup
import py2exe
import shutil
import glob
import matplotlib,six
opts = {'py2exe': { "includes" : ["matplotlib.backends",
"matplotlib.backends.backend_qt4agg",
"matplotlib.figure","numpy",
"six",
"mpl_toolkits.basemap",
"matplotlib.backends.backend_tkagg"],
'excludes': ['_gtkagg', '_tkagg','_agg2','_cairo',
'_cocoaagg', '_fltkagg', '_gtk', '_gtkcairo', 'tcl' ],
'dll_excludes': ['libgdk-win32-2.0-0.dll','w9xpopen.exe',
'libgobject-2.0-0.dll'],
'bundle_files': 1,
'dist_dir': "Dist Folder",
'compressed': True,
}
}
data_files = [(r'mpl-data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\*.*')),
(r'mpl-data', [r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']),
(r'mpl-data\images',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\images\*.*')),
(r'mpl-data\fonts',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts\*.*')),
(r'mpl-data\data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\data\*.*')),
('data', ['C:\\Users\\Me\\Documents\\Example_Json_File.json']),
('pics', ['C:\\Users\\Me\\Documents\\Example_Icon.ico',
'C:\\Users\\Me\\Documents\\Example_Jpg.jpg',
])]
setup(windows=[{"script" : "MyMainScript.py", …Run Code Online (Sandbox Code Playgroud) 我已经使用 pyinstaller 创建了我的 python 应用程序的独立应用程序
pyinstaller --windowed app.py
Run Code Online (Sandbox Code Playgroud)
它实际上在我的计算机上运行并按预期工作,但是当我在我朋友的计算机上尝试它时,它不起作用。它运行但不知何故无法处理文本。
这是使用的库:
import tkinter as Tk
import tkinter.ttk as ttk
import tkinter.scrolledtext as ScrollTxt
from tkinter import END,E,W,filedialog,messagebox
from nltk.tokenize import sent_tokenize, RegexpTokenizer, word_tokenize
import math
import fileinput
from textblob import TextBlob as tb
from nltk.tag import pos_tag, map_tag
from nltk.corpus import stopwords
Run Code Online (Sandbox Code Playgroud)
如果要查看结果文件:https : //www.dropbox.com/s/mfdnaaoik7w0r23/TextSummaryV73.rar?dl=0
有人知道出了什么问题或缺少什么吗?
我认为它是 nltk 或 textblob,有人可以帮助如何将这些文件添加到包中吗?
编辑:我已使用规范文件将 nltk 和 textblob 添加到 Python 应用程序的目录中。现在的问题是,如何让程序知道这两个导入已经在目录中了?
我正在使用PyDrive从我正在使用Pyinstaller打包的桌面Python应用程序将文件上传到GoogleDrive.我想尽可能地隐藏client_secrets.json,所以我使用这个解决方案将它嵌入到Pyinstaller .exe文件中:使用PyInstaller 2.1和MEIPASS错误捆绑数据文件--onefile
然而,PyDrive没有从Pyinstaller放置数据文件的临时目录中找到client_secrets文件.
如何让PyDrive从另一个目录中读取json文件,尤其是AppData?我在考虑将文件从临时目录移动到工作目录,然后再进行身份验证和删除,但是有些用户没有管理员权限,无法修改程序文件(应用程序的安装位置)
我看到我可以使用我可以引用另一个目录的settings.yaml文件,但是pyinstaller似乎使用sys._MEIPASS变量将嵌入式client_secrets.json放在temp文件夹中,所以我不知道它会在哪里.
我必须直接将这个有价值的内容传递给GoogleAuth(),有没有办法做到这一点?
pyinstaller ×3
python ×3
executable ×1
matplotlib ×1
py2exe ×1
pydrive ×1
python-2.7 ×1
python-3.x ×1