from wordcloud import WordCloud
import numpy,sys,datetime,time
import PIL.Image as Image
data=[]
def onlyInt(content):
data = input(content)
try:
inputData = eval(data)
if type(inputData) == int:
return inputData
except:
return onlyInt(content)
def sayWord(relation):
try:
with open(relation+".txt" ,encoding="utf-8")as file:
text=file.read()
mask_pic = numpy.array(Image.open("生日祝福1.jpg"))
wordcloud=WordCloud(font_path="msyh.ttf",background_color="white", width=720, height=674,max_words=50, mask=mask_pic).generate(text)
image=wordcloud.to_image()
image = image.convert('RGBA')
image2=Image.open("生日祝福.jpg")
image2 = image2.convert('RGBA')
r, g, b, alpha = image2.split()
alpha = alpha.point(lambda i: i>0 and 150)
image = Image.composite(image2, image, alpha)
image = image.convert('RGB')
image.show()
image.save("生日快乐.jpg")
except:
print("主上之间的关系臣妾不知道该如何表达祝福")
try:
with open("记事簿.txt" ,encoding="ANSI")as file1:
data=eval(file1.read())
print(data)
except:
pass
if input("如果要向记事簿中添加对象请输入N以外的任意数")[0] != "N":
data.append({"年":onlyInt("请输入出生年份"),"月":onlyInt("请输入出生月份"),"日":onlyInt("请输入出生日期"),"关系":input("请输入关系:朋友、伴侣、亲人")})
output = open("记事簿.txt",'w')
output.write(str(data))
output.close()
for i in data:
if datetime.datetime.now().month==i["月"] and datetime.datetime.now().day==i["日"]:
sayWord(i["关系"])
sys.exit(0)
print("今天没有人过生日呢~")
time.sleep(100)
花一中午时间写了个词云小工具,
真是给自己挖了个深坑,
idle里运行倒是好好的,
pyinstaller打包完成之后,一运行就报错FileNotFound
然而,我已经把所有运行需要的文件都放进同一个目录下了
这我就有点懵了
看错误信息应该是运行的时候还引用了 wordcloud库里的文件
我先打开了错误信息目录查看情况,发现这是个运行文件的临时目录
这条路算是堵死了
我只能回到wordcloud库找找问题
这只是个2KB的数据文件,看来问题还在wordcloud库里
到这里我已经束手无策了,还好看到【威震四海】大佬的帖子
https://blog.csdn.net/Beyond_F4/article/details/88706837
FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'DroidSansMono.ttf'))
STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords')).readlines()))
将wordcloud库中的绝对引用改为相对引用
FONT_PATH = os.environ.get('FONT_PATH', os.path.join(os.path.dirname(sys.executable), 'DroidSansMono.ttf'))
STOPWORDS = set([x.strip() for x in open(os.path.join(os.path.dirname(sys.executable),'stopwords')).read().split("\n")])
这个问题解决,但是又遇到了新的问题
MatplotlibDeprecationWarning
打包的时候使用
pyinstaller 123.spec
即可