Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des Beispielcodes zum Packen von .py-Dateien in ausführbare Exe-Dateien in Python

Detaillierte Erläuterung des Beispielcodes zum Packen von .py-Dateien in ausführbare Exe-Dateien in Python

高洛峰
高洛峰Original
2017-03-24 16:30:233148Durchsuche

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zum Packen von .py-Dateien in ausführbare EXE-Dateien ein. Ich glaube, dass er für jeden, der ihn benötigt, einen gewissen Referenzwert hat Zusammen. Schauen Sie mal rein.

Vorwort

Ich habe kürzlich ein paar einfache Crawler-Python-Programme erstellt, deshalb wollte ich ein Fenster erstellen, um den Effekt zu sehen.

Zuallererst habe ich mit Windows noch nicht viel Kontakt gehabt, daher werde ich zunächst darüber nachdenken, Qt zu verwenden, um eine einfache Benutzeroberfläche zu erstellen. Hier verwenden wir das vorherige Sinanews-Crawler-Skript als Beispiel, um ein Fenster zu erstellen, um die Sina-Schlagzeilen des Tages abzurufen.

Führen Sie nach dem Generieren der py-Datei die py-Datei aus. Ich habe gerade ein paar Komponenten in das Fenster gezogen. Der Haupttextbrowser wird verwendet, um die erhaltenen Sinanews anzuzeigen.

Zuerst meine Konfiguration posten

Offizieller Download:

PyQt5-5.2.1 für Py3 .3 (Nach der Installation von Python3.3 installieren Sie das entsprechende PyQt, das das Python-Installationsverzeichnis findet. Das Installationsverzeichnis muss nicht geändert werden.)

Lokaler Download:

PyQt5-5.2.1 für Py3.3 (Nach der Installation von Python3.3 installieren Sie das entsprechende PyQt, das das Python-Installationsverzeichnis findet. Das Installationsverzeichnis muss nicht geändert werden.)

Python3.3 verfügt nicht pip ist standardmäßig installiert. Sie müssen get-pip.py herunterladen und ausführen. Es wird angezeigt, dass die Installation erfolgreich ist.

Der nächste Schritt besteht darin, einige notwendige Komponenten zu installieren. Um die Installation zu vereinfachen, fügen Sie zunächst pip zu den Umgebungsvariablen hinzu.

Jetzt können wir den pip-Befehl verwenden, um die Komponente zu installieren.

Veröffentlichen Sie zuerst sina_news.py und beobachten Sie, welche Komponenten benötigt werden.

import requests
from bs4 import BeautifulSoup
res = requests.get('http://news.sina.com.cn/china/')
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')

for news in soup.select('.news-item'):
 if len(news.select('h2')) > 0:
 h2 = news.select('h2')[0].text
 a = news.select('a')[0]['href']
 time = news.select('.time')[0].text
 print(time,h2,a)

Ich habe Importanfragen gefunden, BeautifulSoup importieren, also installieren wir zuerst diese Komponenten

pip install requests

pip install BeautifulSoup4

Nachdem wir diesen Code in den Fenstercode eingefügt haben:

x. py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'x.ui'
#
# Created by: PyQt5 UI code generator 5.8.1
#
# WARNING! All changes made in this file will be lost!
import sys
import requests
from PyQt5 import QtCore, QtGui, QtWidgets
from bs4 import BeautifulSoup

class Ui_x(object):
 def getNews():
 res = requests.get('http://news.sina.com.cn/china/')
 res.encoding = 'utf-8'
 soup = BeautifulSoup(res.text,'html.parser')
 title = []
 for news in soup.select('.news-item'):
 if len(news.select('h2')) > 0:
 h2 = news.select('h2')[0].text
 title.append(h2)
 a = news.select('a')[0]['href']
 time = news.select('.time')[0].text
 return '\n'.join(title)

 
 def setupUi(self, x):
 x.setObjectName("x")
 x.resize(841, 749)
 self.timeEdit = QtWidgets.QTimeEdit(x)
 self.timeEdit.setGeometry(QtCore.QRect(310, 10, 141, 31))
 self.timeEdit.setObjectName("timeEdit")
 self.dateEdit = QtWidgets.QDateEdit(x)
 self.dateEdit.setGeometry(QtCore.QRect(100, 10, 191, 31))
 self.dateEdit.setObjectName("dateEdit")
 self.textBrowser = QtWidgets.QTextBrowser(x)
 self.textBrowser.setGeometry(QtCore.QRect(60, 80, 701, 641))
 self.textBrowser.setObjectName("textBrowser")
 self.retranslateUi(x)
 QtCore.QMetaObject.connectSlotsByName(x)

 def retranslateUi(self, x):
 _translate = QtCore.QCoreApplication.translate
 x.setWindowTitle(_translate("x", "x"))

if __name__ == '__main__': 
 app = QtWidgets.QApplication(sys.argv)
 Form = QtWidgets.QWidget()
 ui = Ui_x()
 ui.setupUi(Form)
 Form.show()
 ui.textBrowser.setText(Ui_x.getNews())
 sys.exit(app.exec_())

Wenn alles gut geht, sollten Sie das angezeigte Fenster sehen können, wenn Sie x.py in Python ausführen.

Das Folgende ist der Verpackungsprozess. Der Autor verwendet hier Pyinstaller. Wenn es nicht installiert ist, müssen Sie es installieren:

pip install pyinstaller

Nachdem die Installation abgeschlossen ist, geben Sie den Cmd-Pfad ein in das Verzeichnis, in dem sich x.py befindet.

Paketierungsbefehl:

Pyinstaller -w x.py

Zu diesem Zeitpunkt wird der dist-Ordner in x.py generiert und die gepackte x.exe befindet sich in diesem Ordner. Doppelklicken Sie auf x.exe, um den Effekt anzuzeigen:

Detaillierte Erläuterung des Beispielcodes zum Packen von .py-Dateien in ausführbare Exe-Dateien in Python

Natürlich gibt es viele Verbesserungen, wie z. B. die Auswahl eines Datums oben und das Abrufen der Schlagzeilen des angegebenen Datums.

Mögliche Probleme:

Das gepackte Programm kann beim Öffnen nicht ausgeführt werden:

ImportError: No module named 'queue'

During handling of the above exception, another exception occurred:

 Traceback (most recent call last):
 File "test.py", line 2, in <module>
 File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
 exec(bytecode, module.__dict__)
 File "site-packages\requests\__init__.py", line 63, in <module>
 File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
 exec(bytecode, module.__dict__)
 File "site-packages\requests\utils.py", line 24, in <module>
 File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
 exec(bytecode, module.__dict__)
 File "site-packages\requests\_internal_utils.py", line 11, in <module>
 File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
 exec(bytecode, module.__dict__)
 File "site-packages\requests\compat.py", line 11, in <module>
 File "c:\users\hasee\appdata\local\programs\python\python35-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
 exec(bytecode, module.__dict__)
 File "site-packages\requests\packages\__init__.py", line 29, in <module>
ImportError: No module named 'urllib3'
Failed to execute script test</module></module></module></module></module></module>

Natürlich Der Fehlercode, den ich damals nicht behalten habe, wurde durch eine Versionsinkongruenz verursacht:

Mein Pyinstaller ist 3.2

Die Version von Anfragen muss herabgesetzt werden, Anfragen2 .10 kann eine erfolgreiche Verpackung sein, aber 2.11 funktioniert nicht. Hier werden die zur Lösung dieses Problems verwendeten Anfragen 2.10 veröffentlicht. Ich weiß nicht, ob dieses Problem in Zukunft behoben wird. Ich habe gestern von diesem Käfer geträumt. Als ich heute Morgen aufwachte, war ich so aufgeregt, dass ich es nicht ertragen konnte. Ich hoffe, dass die Fragen, die Ihnen während dieses Prozesses begegnen, hilfreich für Sie sind.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Beispielcodes zum Packen von .py-Dateien in ausführbare Exe-Dateien in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn