我正在尝试使用pyinstaller创建一个.exe文件并执行它
它不会从中获取任何结果
b = TextBlob(ar)
score = b.sentiment.polarity
在控制台上执行时返回正确的值 但在使用.exe
执行时返回0def start_dmo():
print ("Importing all the required packages...")
from textblob import TextBlob
input ("press enter to continue")
print("All Necessary Packages imported")
input("press enter to continue")
ar="I cant be more happy with this"
print(ar)
b = TextBlob (ar)
score = b.sentiment.polarity
print (b.sentiment.polarity)
input("press enter to continue")
score = round (score, 2)
if score > 0.0:
senti = "Positive"
elif score < 0.0:
senti = "Negative"
else:
senti = "Neutral"
print("Score"+str(score)+"sentiment"+senti)
input("press enter to continue")
start_dmo()
this is the output when the above code is executed on console
答案 0 :(得分:0)
尝试在textblob
函数之前导入start_dmo
,以便pyinstaller将其视为依赖项。
from textblob import TextBlob
start_dmo():
....
答案 1 :(得分:0)
问题解决了! 简单解决方案 将pyinstaller更改为cx_Freeze 仅供参考cx_Freeze与python 3.6完美搭配 要知道如何使用cx_freeze创建.exe,请按照以下链接: https://pythonprogramming.net/converting-python-scripts-exe-executables/
如果你使用numpy或pandas你可能需要添加选项cz它可能不会导入numpy形成你的exe,所以解决该问题如下链接: Creating cx_Freeze exe with Numpy for Python
祝你好运!答案 2 :(得分:0)
Pyinstaller不在程序包中包含en-sentiment.xml
,因此情绪分析器缺少依赖项并返回0.在这种情况下,Textblob不会产生错误。
pyinstaller要求您手动在myscript.spec
中指定任何数据文件。但是,正如您所发现的那样,cx_Freeze
似乎尊重setup.py
配置,该配置指定了已包含的数据文件:
package_data={
"textblob.en": ["*.txt", "*.xml"]
}
要解决此问题,请修改pyinstaller myscript.spec
文件以复制textblob/en/en-sentiment.xml
,或按照讨论切换到cx_Freeze
。
请参阅Github上的帖子。
答案 3 :(得分:0)
嘿,将textblob从站点程序包复制到您的工作目录中 并在.spec
下运行 a = Analysis(.....
datas=[( 'textblob/en/*.txt', 'textblob/en' ),
( 'textblob/en/*.xml', 'textblob/en' )],
....)
它将起作用