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

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

ただいまの
回答率

90.48%

  • Python 3.x

    10213questions

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

  • pip

    248questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,546

dazaiginsuke

score 1

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

前提・実現したいこと

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'
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • katsuko

    2016/10/13 22:24

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

    キャンセル

  • dazaiginsuke

    2016/10/13 22:32

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

    キャンセル

  • katsuko

    2016/10/13 23:12

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

    キャンセル

  • dazaiginsuke

    2016/10/13 23:47 編集

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

    キャンセル

回答 1

checkベストアンサー

0

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

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

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

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

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

from distutils.core import setup
import py2exe

py2exe_options = {
  'excludes': ['readline'],
}
setup(
  options = {'py2exe': py2exe_options },
  console=['window01.py']
  )

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/14 00: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のまま実行すればすんなり動いてくれるのですが、なかなかうまくいかないものです。
    もう少しいろいろやってみて有効な対策が見つからなければ、このままベストアンサーとさせていただきます。
    重ね重ねになりますが、本当にありがとうございました。

    キャンセル

  • 2016/10/14 00:48

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

    キャンセル

  • 2016/10/14 00:53

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

    キャンセル

  • 2016/10/14 00:57 編集

    失礼しました、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'
    ---
    のエラーが相変わらず出てしまいますが、これは別の問題かもしれません。

    設問について解決して頂いたので、ベストアンサーとさせていただきます。
    理解の努力不足でお手間を取らせてしまい申し訳ございませんでした。

    いろいろ試してみてうまくいかない場合は、別質問として投稿させていただきますので、その際は宜しくお願い致します。

    キャンセル

  • 2016/10/14 01:24

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

    キャンセル

  • 2016/10/14 01:35

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

    キャンセル

同じタグがついた質問を見る

  • Python 3.x

    10213questions

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

  • pip

    248questions

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