質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

2633閲覧

NLTK含むプログラムをpy2exeでexe化したい。

akisan55

総合スコア49

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/14 13:28

編集2021/06/15 13:40

###概要
プログラムのexe化に関して困っていることがあるので、教えてください。
NLTK含むプログラムをexe化したいと考えてpy2exeで以下のプログラムを走らせました。

test

1import nltk 2s = "Hi, I'm Taro Yamada I woke up at 8am" 3morph = nltk.word_tokenize(s) 4print(morph)

(https://qiita.com/m__k/items/ffd3b7774f2fde1083fa参照)

py2exe

1from distutils.core import setup 2import py2exe 3 4option = { 5 'compressed': 1, 6 'optimize': 2, 7 'bundle_files': 2, 8} 9 10setup( 11 options = { 12 'py2exe': option, 13 }, 14 console = [ 15 {'script': 'test.py'} 16 ], 17 zipfile = None, 18) 19

出来たプログラムを実行すると以下のエラーが発生しました。

Traceback (most recent call last): File "zipextimporter.pyc", line 87, in load_module zipimport.ZipImportError: can't find module 'numpy.random.mtrand' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "test.py", line 1, in <module> File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 656, in _load_unlocked File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible File "zipextimporter.pyc", line 87, in load_module File "nltk\__init__.pyc", line 128, in <module> File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 656, in _load_unlocked File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible File "zipextimporter.pyc", line 87, in load_module File "nltk\collocations.pyc", line 39, in <module> File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 656, in _load_unlocked File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible File "zipextimporter.pyc", line 87, in load_module File "nltk\metrics\__init__.pyc", line 16, in <module> File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 656, in _load_unlocked File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible File "zipextimporter.pyc", line 87, in load_module File "nltk\metrics\scores.pyc", line 15, in <module> File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 656, in _load_unlocked File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible File "zipextimporter.pyc", line 87, in load_module File "scipy\__init__.pyc", line 61, in <module> File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 656, in _load_unlocked File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible File "zipextimporter.pyc", line 87, in load_module File "numpy\__init__.pyc", line 151, in <module> File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 656, in _load_unlocked File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible File "zipextimporter.pyc", line 87, in load_module File "numpy\random\__init__.pyc", line 179, in <module> File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 656, in _load_unlocked File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible File "zipextimporter.pyc", line 87, in load_module File "numpy\random\_pickle.pyc", line 1, in <module> File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 656, in _load_unlocked File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible File "zipextimporter.pyc", line 112, in load_module SystemError: initialization of numpy.random.mtrand did not return an extension module

どのようなエラーの内容なのでしょうか?
回避方法を知りたいです。お願いします。
###環境
Windows10 64bit
nltk=3.6.2 version

pyinstallerの使用はしたくありません。(速度と容量の関係上)
###補足
新しく出たエラー

log

1Traceback (most recent call last): 2 File "test.py", line 1, in <module> 3 File "<frozen importlib._bootstrap>", line 971, in _find_and_load 4 File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked 5 File "<frozen importlib._bootstrap>", line 656, in _load_unlocked 6 File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible 7 File "nltk\__init__.pyc", line 142, in <module> 8 File "<frozen importlib._bootstrap>", line 971, in _find_and_load 9 File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked 10 File "<frozen importlib._bootstrap>", line 656, in _load_unlocked 11 File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible 12 File "nltk\chunk\__init__.pyc", line 157, in <module> 13 File "<frozen importlib._bootstrap>", line 971, in _find_and_load 14 File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked 15 File "<frozen importlib._bootstrap>", line 656, in _load_unlocked 16 File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible 17 File "nltk\chunk\api.pyc", line 13, in <module> 18 File "<frozen importlib._bootstrap>", line 971, in _find_and_load 19 File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked 20 File "<frozen importlib._bootstrap>", line 656, in _load_unlocked 21 File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible 22 File "nltk\parse\__init__.pyc", line 100, in <module> 23 File "<frozen importlib._bootstrap>", line 971, in _find_and_load 24 File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked 25 File "<frozen importlib._bootstrap>", line 656, in _load_unlocked 26 File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible 27 File "nltk\parse\transitionparser.pyc", line 19, in <module> 28 File "<frozen importlib._bootstrap>", line 971, in _find_and_load 29 File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked 30 File "<frozen importlib._bootstrap>", line 656, in _load_unlocked 31 File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible 32 File "sklearn\__init__.pyc", line 80, in <module> 33 File "<frozen importlib._bootstrap>", line 971, in _find_and_load 34 File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked 35 File "<frozen importlib._bootstrap>", line 656, in _load_unlocked 36 File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible 37 File "sklearn\_distributor_init.pyc", line 23, in <module> 38 File "ctypes\__init__.pyc", line 348, in __init__ 39OSError: [WinError 126] 指定されたモジュールが見つかりません。

py2exe

1from distutils.core import setup 2import py2exe 3 4option = { 5 'compressed': 1, 6 'optimize': 2, 7 'bundle_files': 2, 8} 9 10 11setup( 12 options = { 13 'py2exe': { 14 'bundle_files': 3, 15 'optimize': 2, 16 'includes': ["nltk"] 17 } 18 }, 19 windows = [{'script': 'test.py'}], 20)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

akisan55さんの基となるpyファイルに対して、ppaulさんの回答を考慮すると、以下のようになるでしょうか。
ご確認ください。

※繰り返しになりますが、私の手元では事象が再現できず、下記のコードについても、これで解決する保証はありませんので、ご容赦ください。

python:py2exe.py

1 2from distutils.core import setup 3import py2exe 4 5setup( 6 options={ 7 'py2exe': { 8 'compressed': 1, 9 'optimize': 2, 10 'bundle_files': 3, 11 'includes': ['pyaudio', 'scipy', 'numpy', 'skimage', 'PIL', 'difflib', 'locale', 'inspect', 'skimage._shared', 'skimage._shared.geometry', 'scipy.special._ufuncs_cxx', 'scipy.linalg.cython_blas', 'scipy.linalg.cython_lapack', 'scipy.integrate', 'scipy.sparse.csgraph._validation'], 12 'excludes': ['pkg_resources', 'doctest', 'pdb', 'calendar', 'optparse', 'jsonschema', 'tornado', 'setuptools', 'distutils', 'matplotlib'] 13 } 14 }, 15 windows=[{'script': 'ImageSound.py'}], 16 data_files=[('images', ['images/author.png'])], 17 console=[ 18 {'script': 'test.py'} 19 ], 20 zipfile=None, 21) 22

投稿2021/06/20 04:03

_whitecat_22

総合スコア1305

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akisan55

2021/06/22 14:07

ご回答ありがとうございます。 すみませんが、やはり同様のエラーが出てしましました。 現在の開発環境のまま、このエラーを回避したいので、もう少し回答を待ってみます。 何かいい解決方法があれば、また教えて頂けると嬉しいです。
guest

0

py2exe not including the modules from “includes”によると、

python

1setup( 2 options = { 3 'py2exe': { 4 'bundle_files': 3, 5 'optimize': 2, 6 'includes': ['pyaudio', 'scipy', 'numpy', 'skimage', 'PIL', 'difflib', 'locale', 'inspect', 'skimage._shared', 'skimage._shared.geometry', 'scipy.special._ufuncs_cxx', 'scipy.linalg.cython_blas', 'scipy.linalg.cython_lapack', 'scipy.integrate', 'scipy.sparse.csgraph._validation'], 7 'excludes': ['pkg_resources','doctest', 'pdb', 'calendar', 'optparse', 'jsonschema', 'tornado', 'setuptools', 'distutils', 'matplotlib'] 8 } 9 }, 10 windows = [{'script': 'ImageSound.py'}], 11 data_files = [('images',['images/author.png'])] 12)

のように、必要なライブラリを'include': で与えなければならないようですよ。

投稿2021/06/14 13:37

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akisan55

2021/06/15 13:33

ご回答有難うございます。 includesで、必要なライブラリ「nltk」を指定しましたが、解決しませんでした。 違うエラーが発生したので補足します。 今回の場合、何のライブラリが必要なのでしょうか? また、予想以上にファイルの容量が大きくなってしまいました。 必要のないライブラリがあると思うのですが、ファイルのサイズを小さくできないでしょうか? 済みませんが、教えて頂けると助かります。
_whitecat_22

2021/06/19 13:25

申し訳ございませんが、私の手元の環境ではakisan55さんの現象が再現できません。(開発環境のバージョン等の問題かと思われます。) ppaulさんの回答の通りに py2exe.py を設定の上、再度実行してみてはいかがでしょうか。 ppaulさんの回答(=https://stackoverflow.com/questions/32395904/py2exe-not-including-the-modules-from-includes)は、パッケージの依存関係を包含するものと思われます。
akisan55

2021/06/20 02:44

ご回答ありがとうございます。 py2exeなどのversionをそろえてみて再度実行しましたが、成功しませんでした。 Appdata\Roamingにあるnltk_dataというファイルがおそらく必要なので、 data_filesオプションで指定しましたが、「アクセスが拒否されました。」と表示されてしまいました。 最終的にどのようなsetup.pyを書くと正常にnltkが動作するのでしょうか? できれば、setup.py全文を公開してくれたらとても助かります。 (Anacondaはまだインストールしていないので、できれば使いたくないです。)
_whitecat_22

2021/06/20 04:00

Markdownが効かないので、別の回答として、py2exe.py(setup.py)を記述しますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問