v
Wordcloudをexe化して実行すると
File "site-packages\wordcloud\wordcloud.py", line 31, in <module> PermissionError: [Errno 13] Permission denied: 'C:\Users\★★\AppData\Local\Programs\Python\Python38-32\★★\wordcloud\stopwords
このようなエラーが出ます。
PermissionError: [Errno 13] Permission denied
でググると色々ヒットしました。
###参考リンク
①python PermissionError: [Errno 13] Permission denied: 'error.csv'
このリンクにあるようにエラーがファイルになっているのなら、ファイルを開いているなどの理由があるとは思うのですが、今回の当方のエラーはフォルダ自体?がエラーになっているのか…。
②https://financial-it-engineer.hatenablog.com/entry/20181017/1539780661
これっぽいのかな?と思うのですが、どうも自分のコードには参考にならないと思います。
↓が自分のコードの一部抜粋です。
text_file = open(input_count + "★.csv",encoding="utf_8_sig") #ここでCSV読込ファイル指定 ※必ず文字化けは直しておくこと。 full_text = text_file.read() full_text= full_text.replace("\n","") print(full_text) t = Tokenizer() tokens = t.tokenize(full_text) word_list=[] for token in tokens: word = token.surface partOfSpeech = token.part_of_speech.split(',')[0] partOfSpeech2 = token.part_of_speech.split(',')[1] if partOfSpeech == "名詞": if (partOfSpeech2 != "非自立") and (partOfSpeech2 != "代名詞") and (partOfSpeech2 != "数"): word_list.append(word) words_wakati=" ".join(word_list) print(words_wakati) stop_words = ['さん','今日','昨日','明日'] fpath = 'C:/Windows/Fonts/HGRSGU.ttc' # 日本語フォント指定 wordcloud = WordCloud( font_path=fpath, width=900, height=600, # default width=400, height=200 background_color="white", # default=”black” stopwords=set(stop_words), max_words=500, # default=200 min_font_size=4, #default=4 collocations = False #default = True ).generate(words_wakati) plt.figure(figsize=(15,12)) plt.imshow(wordcloud) plt.axis("off") plt.savefig("D:/Desktop/" + input_count + "word_cloud.png") plt.show()
アクセス権限がないとか読み取り権限を外すというのもやっているのですがエラーが出たままです。
なので↓のリンクを参考にして、
③http://ajec.hatenablog.com/entry/2017/06/26/165424
wordcloud完成品がデスクトップに保存されるようにしました。
コマンドプロンプトでは正常に起動します。
ただ、exe化して実行するとエラーになってしまうのです。
以下、エラーになっているファイルの該当箇所です。
# Author: Andreas Christian Mueller <***.com> # # (c) 2012 # Modified by: Paul Nechifor <***.net> # # License: MIT from __future__ import division import warnings from random import Random import os import re import sys import colorsys import matplotlib import numpy as np from operator import itemgetter from PIL import Image from PIL import ImageColor from PIL import ImageDraw from PIL import ImageFilter from PIL import ImageFont from .query_integral_image import query_integral_image from .tokenization import unigrams_and_bigrams, process_tokens FILE = os.path.dirname(__file__) 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())) #← ここです★★★★★ class IntegralOccupancyMap(object): def __init__(self, height, width, mask): self.height = height self.width = width if mask is not None: # the order of the cumsum's is important for speed ?! self.integral = np.cumsum(np.cumsum(255 * mask, axis=1), axis=0).astype(np.uint32) else: self.integral = np.zeros((height, width), dtype=np.uint32)
長いので該当箇所近辺だけを記載します。
その中の↓です。
STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords')).readlines()))
あなたの回答
tips
プレビュー