2017-03-16 4 views
0

私はソフトウェア開発に慣れていませんし、cx_freezeを使ってpyQt5モジュールを使っているhello.py pythonファイルの実行ファイルを作っています。次のエラーが繰り返し発生します。私は述べているようにPython 3.6とPyQt5を使用しています。私はpyqt5でpyファイルの実行可能ファイルをビルドするためにcx_freezeを使用しています。以下はエラーです

image

ははAttributeError:モジュールのlxml.etrr 'は属性 'fromstring' 以下

image

import sys 
import time 
import wikipedia 
import docx 
import requests 
from PyQt5.QtWidgets import * 
from PyQt5.QtCore import * 

doc = docx.Document() 

class App(QMainWindow): 


    def __init__(self): 
     super().__init__() 
     self.title = 'Articulate - tecbeast.com' 
     self.left = 50 
     self.top = 100 
     self.width = 400 
     self.height = 300 
     self.initUI() 

    def initUI(self): 
     self.setWindowTitle(self.title) 
     self.setGeometry(self.left, self.top, self.width, self.height) 
     lbl1 = QLabel(self) 
     lbl1.setText("Please enter the topics you want to print articles on") 
     lbl1.setGeometry(20,20,400,40) 

     lbl2 = QLabel(self) 
     lbl2.setText('Topics should be separeted by comma ","') 
     lbl2.setGeometry(20,40,400,40) 

     lbl3 = QLabel(self) 
     lbl3.setText('Make sure that your pc is connected to the internet') 
     lbl3.setGeometry(20,60,400,40) 

     # Create textbox 
     self.textbox = QLineEdit(self) 
     self.textbox.move(20, 100) 
     self.textbox.resize(280,40) 

     # Create a button in the window 
     self.button = QPushButton('Make Article', self) 
     self.button.move(20,160) 

     # connect button to function on_click 
     self.button.clicked.connect(self.on_click) 
     self.show() 

    def shw_wt(self): 
     #for the showing of label Please wait 
     lbl4 = QLabel(self) 
     lbl4.setText('Please wait') 
     lbl4.setGeometry(20,135,400,40) 
     lbl4.show() 



    @pyqtSlot() 
    def on_click(self): 
     self.shw_wt() 
     cur_topic = self.textbox.text() 
     topics = cur_topic.split(",") 
     for ech_topic in topics: 
      try: 
       para = wikipedia.summary(ech_topic, sentences = 100) 
      except wikipedia.exceptions.DisambiguationError as e: 
       para = wikipedia.summary(e.options[0], sentences = 100) 
      except requests.exceptions.ConnectionError as e: 
       pop_up = QMessageBox.question(self, 'Warning!', 'You are not connected to the internet', QMessageBox.Ok) 
       if pop_up == QMessageBox.Ok: 
        self.initUI() 
        #problem in above line 
       else: 
        pass 
      doc.add_heading (ech_topic,0) 
      doc.add_paragraph(para) 
     n = str(time.time()) 
     doc.save(n+".docx") 
     pop_up = QMessageBox.question(self, 'All Done', 'Your article is made. Check your current directory', QMessageBox.Ok) 
     if pop_up == QMessageBox.Ok: 
      pass 
     else: 
      pass 
     #lbl4.hide() 
     self.show() 



if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = App() 
    sys.exit(app.exec_()) 

答えて

0

私の環境では、問題を再現しました。

私のsetup.pyを試してみてください

import sys 
from cx_Freeze import setup, Executable 

# Dependencies are automatically detected, but it might need fine tuning. 
build_exe_options = { 
    "packages": ["idna","lxml"], 
    "includes": ["urllib3","queue"], 
    "excludes": ["tkinter"], 
    # "include_files":[('./platforms','./platforms')] # uncomment if need qwindows.dll for qt5 application, you need put qwindows.dll in "./platforms" folder. 
} 

# GUI applications require a different base on Windows (the default is for a 
# console application). 
base = None 
if sys.platform == "win32": 
    base = "Win32GUI" 

setup( name = "demo", 
     version = "0.1", 
     description = "demo", 
     options = {"build_exe": build_exe_options}, 
     executables = [Executable("demo.py", base=base)]) 

根本的な原因はターゲットフォルダ内lxmlパッケージが欠落しています。 以下のビルドオプションでパッケージを指定する必要があります。

build_exe_options = { 
    "packages": ["idna","lxml"], 
    "includes": ["urllib3","queue"], 
    "excludes": ["tkinter"], 
    # "include_files":[('./platforms','./platforms')] # uncomment if need qwindows.dll for qt5 application, you need put qwindows.dll in "./platforms" folder. 
} 
+0

cmd.exeでsetup.pyファイルを実行中に次のエラーが発生しました プラットフォーム/ファイル名/ディレクトリが見つかりません –

+0

ありがとうございます。しかしそれはうまくいった。私はちょうどその行をコメントアウトしました。ありがとうございました。 –

+0

ええ、私はアナコンダを使用しています。それは問題です。私は私の答えでコメントします。 – suiwenfeng

0

があなたのハローをい、私のhello.pyファイルではありません。 pyにはインポートされたライブラリがありますか?

+0

はい! PyQt5.QtWidgets import *、 from PyQt5.QtGui import *、 from PyQt5.QtCore import * –

+0

あなたのコード/レポを添付しないのはなぜですか? – suiwenfeng

0

あなたが使ったモジュールを組み込み、ビルドに組み込む必要があります。

ここでは、できるかぎり上手く説明できる回答へのリンクです。あなたの答えに基づいて、あなたがインポートしたすべてのモジュールのパスを使用する必要があります。各モジュールから必要なものだけを使用する方が良いし、各モジュールの仕組みについてより多くの研究が必要になるかもしれません。

sourceforge help topic

+0

申し訳ありません。しかし、ちょうど私は簡単なGUIプログラムを試してみました。 cx_freezeがpython-docxモジュールをレンダリングできないようです。 –

関連する問題