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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

解決済

1回答

9829閲覧

Python3.5.2環境にreadlineモジュールをインストールしたい。

dazaiginsuke

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

0クリップ

投稿2016/10/12 16:42

編集2016/10/13 13:29

よろしくお願い致します。

###前提・実現したいこと
Python初学者です。
Python3.5.2とPyQt5をインストールした環境で実行可能な
http://qiita.com/kenasman/items/70a3ef914b0e7e55a123
で紹介されている「シンプルなウィンドウ」プログラムを、
http://news.mynavi.jp/series/python/028/
を元に、Windowsで実行可能なバイナリファイルにしようとしています。

###発生している問題・エラーメッセージ
コマンドプロンプトにて、
@python setup.py py2exe
を実行したところ、

Traceback (most recent call last): File "setup.py", line 3, in <module> import readline ImportError: No module named 'readline'

というエラーメッセージが表示されました。
「readline module」がないのかと思い、
#pip install readline
を実行しましたが、

Collecting readline Using cached readline-6.2.4.1.tar.gz Complete output from command python setup.py egg_info: error: this module is not meant to work on Windows ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in C:\Users\ユーザー名\AppData\Local\Temp\pip-build-mmb57v22\readline\

というエラーメッセージが出て失敗します。

@pip3 install readline
でも同様です。

###該当のソースコード

実行時のカレントディレクトリにあるsetup.pyの中身は、

from distutils.core import setup import py2exe import readline setup(console=['window01.py'])

window01.pyの中身は、

#!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import * def main(): app = QApplication(sys.argv) w = QWidget() w.resize(250, 150) w.setWindowTitle('Window01') w.show() sys.exit(app.exec_()) if __name__ == '__main__': main()

です。

###試したこと
pipでインストールしようとする6.2.4.1より新しい「readline-7.0」を「 https://cnswww.cns.cwru.edu/php/chet/readline/rltop.html 」からダウンロードし、「@pip install readline-7.0.tar.gz」を実行したものの、下記エラーが出て失敗。pip3でも同様。

Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "c:\users\liuhong_2\appdata\local\programs\python\python35\lib\tokenize.py", line 454, in open buffer = _builtin_open(filename, 'rb') FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\LIUHON~1\\AppData\\Local\\Temp\\pip-llvwi9lc-build\\setup.py' ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in C:\Users\ユーザー名\AppData\Local\Temp\pip-llvwi9lc-build\

###補足情報(言語/FW/ツール等のバージョンなど)
・言語:python-3.5.2-amd64、pip-8.1.2、PyQt5_gpl-5.7
・実行環境OS:Windows 10 Pro 64-bit (10.0, Build 14393) (14393.rs1_release_inmarket.161004-2338)
・CPU:AMD A10-5800K APU with Radeon(tm) HD Graphics (4 CPUs), ~3.8GHz
・メモリ:24576MB RAM
・補足1:「@python window01.py」は、問題なく実行できます。
・補足2:setup.pyの「import readline」をコメントアウトしても、結局readlineモジュールがないと怒られます。

running py2exe 1 missing Modules ------------------ ? readline imported from cmd, code, pdb Building 'dist\window01.exe'. error: [Errno 2] No such file or directory: 'C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python35\\lib\\site-packages\\py2exe\\run-py3.5-win-amd64.exe'

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

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

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

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

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

katsuko

2016/10/13 13:24

掲示されているsetup.pyに「import readline」がありません。補足で「コメントアウトしても」と書いている以上どこかに記述しているのでしょうけど、どこですか。
dazaiginsuke

2016/10/13 13:32

ありがとうございます。setup.pyの3行目に「import readline」が入っていましたが、デバッグ作業の過程で消したまま掲載してしまったようです。失礼しました。なお、そのまま、消して実行、コメントアウトして実行のいずれにおいても「モジュールがない」というエラーで失敗します。
katsuko

2016/10/13 14:12

readlineをインポートしようとする理由は何でしょう。参考にされているサイトにもそのような記述はありませんし、Windowsでreadlineモジュールは使えないような気が(ちょっと自信なし)。あと、コメントアウトして実行すると、本当に同じエラーメッセージが出力されますか?他のモジュールのインポートエラーではなくて?少なくとも、コメントアウトしたのだから「setup.py」でエラーが起きることはないはずだと思うのですが。
dazaiginsuke

2016/10/13 14:49 編集

ありがとうございます。 >readlineをインポートしようとする理由は何でしょう。 (@質問者)最終目標は、シンプルなPythonのGUIプログラムをバイナリ化することです。 他の方法でも実現できれば、解決です。 >参考にされているサイトにもそのような記述はありませんし、 (@質問者)すみません、昨夜執筆時点での記憶では「import readline」が参考サイトに入っていたと思い込んでいましたが、補足2に書いたエラーを読んで自分が勝手に書いただけだったようです。 この「1 missing Modules」回避を乗り越えた先に道があるのではないかと、ここに質問を投稿しました。 >Windowsでreadlineモジュールは使えないような気が(ちょっと自信なし)。 (@質問者)そうかもしれません。その際は、Visual Studio辺りでやってみようと思います。 >あと、コメントアウトして実行すると、本当に同じエラーメッセージが出力されますか?他のモジュールのインポートエラーではなくて?少なくとも、コメントアウトしたのだから「setup.py」でエラーが起きることはないはずだと思うのですが。 (@質問者)そのまま実行すると、1つ目の引用に示したエラーです。コメントアウトした場合、補足2に示したエラーです。消した場合も、補足2に示したエラーです。
guest

回答1

0

ベストアンサー

まず、コメントでも書きましたが、setup.pyではreadlineモジュールはインポートしないでください。

py2exeは、対象となっているスクリプトを動かすためのモジュールをかき集めてきます。
その時に、readlineモジュールを拾えなくてエラーになっているようです。

しかし、Windowsでreadlineモジュールは必要ないと思います。
必要であれば、「python window01.py」で動かした時にインポートエラーになるはずですし、おおよそPyQtの中で以下のようなコードがあって、それを拾ってきているのかもしれません。

python

1import sys 2# Windows以外で、インポートする。 3if sys.platform != 'win32': 4 import readline

とりあえず、readlineは無視してしまいましょう。
setup.pyに以下のように記述すれば、無視してくれるそうです。

python

1from distutils.core import setup 2import py2exe 3 4py2exe_options = { 5 'excludes': ['readline'], 6} 7setup( 8 options = {'py2exe': py2exe_options }, 9 console=['window01.py'] 10 )

自分もpy2exeはあまり使っていないので試していませんが、とりあえずお試しください。

投稿2016/10/13 15:26

編集2016/10/13 15:52
katsuko

総合スコア3469

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

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

dazaiginsuke

2016/10/13 15:43

katsuko様、ご丁寧な調査とお返事、本当にありがとうざいました。 setup.pyの内容を、 --- from distutils.core import setup import py2exe py2exe_options = { 'excludes': ['readline'], } setup(console=['window01.py']) --- として実行しましたが、下記のエラー --- running py2exe 1 missing Modules ------------------ ? readline imported from cmd, code, pdb Building 'dist\window01.exe'. error: [Errno 2] No such file or directory: 'C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python35\\lib\\site-packages\\py2exe\\run-py3.5-win-amd64.exe' --- が出てしまいました。window01.pyのまま実行すればすんなり動いてくれるのですが、なかなかうまくいかないものです。 もう少しいろいろやってみて有効な対策が見つからなければ、このままベストアンサーとさせていただきます。 重ね重ねになりますが、本当にありがとうございました。
katsuko

2016/10/13 15:48

回答をよく見てください。「setup()」の引数に、「options={'py2exe': py2exe_options}」の記述が必要ですよ。 もし何だったら、「py2exe excludes」でググれば、もっとわかりやすい説明が出てくるかもしれません。
katsuko

2016/10/13 15:53

すいません、自分も手を抜いて書いたせいで勘違いさせたようなので、ちゃんと書いてみました。
dazaiginsuke

2016/10/13 16:01 編集

失礼しました、setup()の引数として「options...」を追記したもの、書き直して頂いた回答ともに試してみました。 お陰様で、エラーメッセージのうち、 --- 1 missing Modules ------------------ ? readline imported from cmd, code, pdb --- が消えました! --- error: [Errno 2] No such file or directory: 'C:\\Users\\ユーザー名\\AppData\\Local\\Programs\\Python\\Python35\\lib\\site-packages\\py2exe\\run-py3.5-win-amd64.exe' --- のエラーが相変わらず出てしまいますが、これは別の問題かもしれません。 設問について解決して頂いたので、ベストアンサーとさせていただきます。 理解の努力不足でお手間を取らせてしまい申し訳ございませんでした。 いろいろ試してみてうまくいかない場合は、別質問として投稿させていただきますので、その際は宜しくお願い致します。
katsuko

2016/10/13 16:24

あぁ、そっちのエラーは気づきませんでした。なんですかね、コレ。 ちなみに、PyQtはモジュールがデカそうなんで、他にもいろいろと問題が起きると思います。 とりあえず、「print文のみ」とかシンプルなスクリプトで試してみることをおすすめします。
dazaiginsuke

2016/10/13 16:35

ありがとうございます。 いろんな解説サイトにを読む限り、Pythonが簡単にバイナリ化出来るかのように解釈してしまったのですが、GUIプログラムについては、どうも道が険しいようですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問