>  기사  >  백엔드 개발  >  Python에서 .py 파일을 exe 실행 파일로 패키징하는 예제 코드에 대한 자세한 설명

Python에서 .py 파일을 exe 실행 파일로 패키징하는 예제 코드에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-03-24 16:30:233174검색

이 기사는 주로 Python에서 .py 파일을 exe 실행 파일로 패키징하는 것과 관련된 정보를 소개합니다. 기사의 소개는 필요한 모든 사람이 읽을 수 있는 확실한 참고 가치가 있다고 생각합니다. 함께 보세요.

서문

최근에 간단한 크롤러 파이썬 프로그램을 몇개 만들어서 효과를 볼 수 있는 창을 만들어보고 싶었습니다.

우선 Windows의 경우 이전에는 접한 적이 별로 없었기 때문에 먼저 Qt를 사용하여 간단한 UI를 만드는 것을 고려해 보겠습니다. 여기서는 이전 sinanews 크롤러 스크립트를 예로 사용하여 오늘의 sina 헤드라인을 가져오는 창을 만듭니다.

py 파일을 생성한 후 py 파일을 실행합니다. 여기서는 몇 가지 구성 요소를 창으로 끌어서 얻은 sinanews를 표시합니다.

먼저 내 구성 게시

공식 다운로드:

Py3용 PyQt5-5.2.1 .3(Python3.3을 설치한 후 해당 PyQt를 설치하면 Python 설치 디렉터리를 찾을 수 있습니다. 설치 디렉터리를 변경할 필요가 없습니다.)

로컬 다운로드:

Py3.3용 PyQt5-5.2.1(Python3.3을 설치한 후 해당 PyQt를 설치하면 Python 설치 디렉터리를 찾을 수 있습니다. 설치 디렉터리를 변경할 필요가 없습니다.)

Python3.3에는 없습니다. pip는 기본적으로 설치됩니다. get-pip.py를 다운로드하여 실행해야 설치가 성공했다는 메시지가 표시됩니다.

다음 단계는 필요한 구성 요소를 설치하는 것입니다. 설치가 쉽도록 먼저 환경 변수에 pip를 추가하세요.

이제 pip 명령을 사용하여 구성 요소를 설치할 수 있습니다.

sina_news.py를 먼저 게시하고 어떤 구성 요소가 필요한지 살펴보세요.

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)

가져오기 요청을 찾았습니다. BeautifulSoup을 가져오므로 먼저 이러한 구성 요소를 설치해 보겠습니다.

pip install requests

pip install BeautifulSoup4

이 코드를 창 코드에 붙여 넣은 후:

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_())

모든 것이 잘 되었다면 Python에서 x.py를 실행했을 때 나타나는 창을 볼 수 있을 것입니다.

다음은 패키징 과정입니다. 여기서는 Pyinstaller가 설치되어 있지 않은 경우 설치해야 합니다.

pip install pyinstaller

설치가 완료된 후 cmd 경로를 cd하세요. x.py가 있는 디렉토리입니다.

패키징 명령:

Pyinstaller -w x.py

이때, x.py에는 dist 폴더가 생성되고, 패키징된 x.exe는 이 폴더 아래에 있습니다. x.exe를 두 번 클릭하면 효과가 표시됩니다.

Python에서 .py 파일을 exe 실행 파일로 패키징하는 예제 코드에 대한 자세한 설명

물론 위에서 날짜를 선택하고 지정된 날짜의 헤드라인을 가져오는 등 많은 개선이 이루어졌습니다.

가능한 문제:

패키지 프로그램을 열 때 실행할 수 없습니다:

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>

물론 이 오류 코드는 , I 버전 불일치로 인해 당시에 보관하지 않았습니다.

내 Pyinstaller는 3.2입니다

요청 버전을 낮춰야 하며, request2.10 성공적으로 패키징할 수 있지만 2.11에서는 작동하지 않습니다. 이 문제를 해결하는 데 사용된 request2.10이 여기에 게시되어 있습니다. 이 문제가 향후 해결될지는 모르겠습니다. 어제 이 버그에 대한 꿈을 꾸었습니다. 오늘 아침에 일어났을 때 너무 신나서 참을 수가 없었어요. 이 과정에서 발생하는 질문이 귀하에게 도움이 되기를 바랍니다.

위 내용은 Python에서 .py 파일을 exe 실행 파일로 패키징하는 예제 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.