Frozen App에서 요청을 사용하는 오류가 발생합니다
-
20-12-2019 - |
문제
냉동 앱에서 Excelent Requests 라이브러리를 사용하려고합니다.해석 할 때 코드는 잘 작동하지만 Dist 실행 파일을 생성 할 때 작동 중지합니다.
이 솔루션을 시도했지만 작동하지 않습니다 ( 요청 도서관 : 누락cx_freeze 이후의 파일
My Setup.py 파일 :
import esky.bdist_esky
from esky.bdist_esky import Executable as Executable_Esky
from cx_Freeze import setup, Executable
from myapp import VERSION
import requests.certs
packages = [
'PIL',
'_winreg',
'esky',
]
includes = [
'PySide',
'sys',
'os',
'datetime',
'threading',
'Queue',
'uuid',
'requests',
]
excludes = [
'TKinter',
'tcl',
'ttk',
]
include_files =["icon-16px.ico",
"icon-32px.ico",
"logo-t-160x56.png",
]
setup(
scripts = [
Executable_Esky(
"myapp.py",
gui_only = False,
icon = "icon-16px.ico",
),
],
data_files = include_files,
options={"build_exe":
{"packages":packages,
"includes": includes,
"include_files": include_files + [(requests.certs.where(),'cacert.pem')],
"excludes": excludes,
"optimize": 2,
"icon":"icon-16px.ico",
},
"bdist_esky":{
'freezer_module':"cxfreeze",
'includes': includes,
'excludes': excludes,
},
},
executables = [Executable(script="myapp.py",base="Win32GUI")],
)
.
추적 :
Traceback (most recent call last):
File "C:\Users\Fernando\Dropbox\the all-seeing boss\myapp_client\testes\cx
_freeze\qt_gui\interface_qt.py", line 45, in login
r = requests.post(url, data=data)
File "C:\Python27\lib\site-packages\requests\api.py", line 88, in post
return request('post', url, data=data, **kwargs)
File "C:\Python27\lib\site-packages\requests\api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 383, in reques
t
resp = self.send(prep, **send_kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 486, in send
r = adapter.send(request, **kwargs)
File "C:\Python27\lib\site-packages\requests\adapters.py", line 385, in send
raise SSLError(e)
requests.exceptions.SSLError: [Errno 185090050] _ssl.c:343: error:0B084002:x509
certificate routines:X509_load_cert_crl_file:system lib
. 해결책 2
github 에이 문제를 해결했습니다 ( https://github.com/ KennethReitz / 요청 / 문제 / 557 # 발급 · 6420819 ).이 팁을 위해 Martjin Pieters에게 감사드립니다.
먼저 내 프로젝트의 폴더에 cacert.pem 파일을 넣은 다음 냉동 된 응용 프로그램에서 이것을 포함 시켰습니다.
include_files =["icon-16px.ico",
"icon-32px.ico",
"logo-t-160x56.png",
"cacert.pem",
]
setup(
scripts = [
Executable_Esky(
"myapp.py",
gui_only = False,
icon = "icon-16px.ico",
),
],
data_files = include_files,
options={"build_exe":
{"packages":packages,
"includes": includes,
"include_files": include_files,
"excludes": excludes,
"optimize": 2,
"icon":"icon-16px.ico",
},
"bdist_esky":{
'freezer_module':"cxfreeze",
'includes': includes,
'excludes': excludes,
},
},
executables = [Executable(script="myapp.py",base="Win32GUI")],
)
.
및 마지막 게시물 에이 인증서를 표시하거나 다음과 같이 requests
를 사용해야합니다.
r = requests.post(url, data=data, verify = os.path.join(appdata,'cacert.pem'))
.
xd
다른 팁
또는
를 사용할 수 있습니다.import requests.certs
build_exe_options = {"include_files":[(requests.certs.where(),'cacert.pem')]}
. 제휴하지 않습니다 StackOverflow