如何使用pyInstaller 完整打包所有需要的库?

How to use pyInstaller to completely pack all the necessary Library?

我已经使用 pyinstaller 创建了我的 python 应用程序的独立应用程序

pyinstaller --windowed app.py

它实际上 运行 在我的电脑上并且按预期工作,但是当我在我朋友的电脑上尝试时,它没有工作。它 运行s 但不知何故无法处理文本。

这里是使用的库:

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

如果您想查看结果文件: https://www.dropbox.com/s/mfdnaaoik7w0r23/TextSummaryV73.rar?dl=0

有人知道哪里出了问题或缺少什么吗?

我认为是 nltk 或 textblob,谁能帮助如何将这些文件添加到包中?

编辑: 我已经使用 spec 文件将 nltk 和 textblob 添加到 Python 应用程序的目录中。现在的问题是,如何让程序知道这两个导入已经在目录中?

我相信您正在寻找的命令是 --onefile。这会将所有必需的包打包到可执行文件中。 This guide 应该能帮到你。

pyinstaller --onefile --windowed app.py

如果您有脚本所需的任何外部文件,这会使过程变得更加困难,因为您需要更改对它们位置的引用。 This answer or this one 可以提供帮助

我遇到了同样的问题,我能够解决它,如图所示:

  1. 将您正在使用的'nltk data'内容复制到nltk_data_folder

  2. 在python代码中写这两行:

{

import nltk
nltk.data.path.append(r'nltk_data_folder')

}

  1. nltk_data_folder 放在 'Application_folder' .exe 文件存在

  2. 你现在可以复制这个'Application_folder'(包含nltk_data_folder.exe 文件 和其他支持文件)和 运行 .exe 文件.

希望对您有所帮助!!

您可以将 nltk_data 文件夹从 nltk 下载的文件夹复制到您的应用程序目录。在您需要库的脚本中,使用 Sandeep 的建议:

basedir = os.path.abspath(os.path.dirname(__file__))
import nltk
nltk.data.path.append(basedir + 'nltk_data')

然后用

构建你的pyinstaller文件
pyinstaller -F --add-data "nltk_data;nltk_data" app.py