0

나는 Google 드라이브 응용 프로그램을 사용하여 데스크톱 응용 프로그램을 파이썬을 사용하여 작성하고 모든 것이 잘 작동합니다. 하지만 pyinstaller를 사용하여 .exe 파일을 출력하고 해당 응용 프로그램을 실행할 때.데스크톱 응용 프로그램과 Google 드라이브 API 충돌

if credentials is None or credentials.invalid: 
    credentials = run(FLOW, storage) 

인증 페이지 쇼와 나는 그것의 액세스를 허용 : 문제는이 라인에서 발생합니다. 평소와 달리, 그 후 아무런 반응이 없으며 .exe 프로그램이 아무 이유없이 종료된다는 것을 알았습니다. 누구든지이 문제를 전에 만났습니까? 그렇다면 어떻게 해결할 수 있습니까?

P. 지금은 오류를 추적하고 그것은 다음과 같다 : 나는 누군가가 유사한 오류 http://code.google.com/p/google-api-python-client/issues/detail?id=58가 발생 보았지만 응답이 이미 그것을 고정했다

Traceback (most recent call last): 
    File "<string>", line 697, in <module> 
    File "<string>", line 562, in __init__ 
    File "build\bdist.win32\egg\oauth2client\tools.py", line 166, in run 
    File "build\bdist.win32\egg\oauth2client\client.py", line 1069, in step2_exchange 
    File "USB\build\pyi.win32\USB\outPYZ1.pyz/httplib2", line 1544, in request 
    File "USB\build\pyi.win32\USB\outPYZ1.pyz/httplib2", line 1294, in _request 
    File "USB\build\pyi.win32\USB\outPYZ1.pyz/httplib2", line 1230, in _conn_request 
    File "USB\build\pyi.win32\USB\outPYZ1.pyz/httplib2", line 984, in connect 
    File "USB\build\pyi.win32\USB\outPYZ1.pyz/httplib2", line 80, in _ssl_wrap_socket 
    File "USB\build\pyi.win32\USB\outPYZ1.pyz/ssl", line 381, in wrap_socket 
    File "USB\build\pyi.win32\USB\outPYZ1.pyz/ssl", line 141, in __init__ 
     ssl.SSLError: [Errno 185090050] _ssl.c:340: error:0B084002:x509 certificate rout 
     ines:X509_load_cert_crl_file:system lib 

. 또한 https://github.com/kennethreitz/requests/issues/557에서이 방법을 시도했지만 작동하지 않습니다. 누구든지 문제를 해결하는 방법을 알고 있습니까?

답변

0

조금 파고 들자 Dropbox API 개발자가 제공 한 솔루션을 기반으로 해결책을 찾았습니다 : https://forums.dropbox.com/topic.php?id=65523&replies=1#post-461457. 이 문제는 기본적으로 인해 발생 :

CA_CERTS = os.path.join(os.path.dirname(os.path.abspath(__file__)), "cacerts.txt") 

__file__ is the key that causes this problem. It cannot work normally in the executable program to find the path. 

비슷한 문제는 여기에서 찾을 수 있습니다 :함으로써

CA_CERTS = os.path.join(os.path.dirname(sys.executable), "cacerts.txt") 

: pyinstaller seems not to find a data file

이 문제를 해결하기 위해, 나는이에 위의 코드를 변경 이 .exe 프로그램은 .exe 파일이있는 디렉터리에서 cacerts.txt를 찾으려고 시도합니다. 이것을 .pyc로 컴파일 한 후 cacerts.txt를 .exe 디렉토리에 넣습니다. 그런 다음 프로그램을 정상적으로 실행할 수 있습니다.

0

필자는 추측하고 있지만 pyinstaller의 Windows exe 처리와 관련하여 가능합니다. 일반적으로이 기능은 사용할 수 없으므로 사용자 지정 흐름을 실행해야 할 수 있습니다.

하지만 당신은 하나에 아래로 범위를 좁힐 수 있습니다 : 모든 필요하기 때문에 브라우저

를 시작 로컬 웹 서버

  • 시작 STDIN/STDOUT
  • 에서

    1. 읽기/쓰기 로컬에서 흐름을 실행할 때 수행해야하며, 그 중 하나가 잘못된 것입니다.

      STDERR을 텍스트 파일에 기록하면 충돌하는 부분을 볼 수 있습니다.

  • +0

    실제로 프로그램은 인증 페이지가있는 웹 브라우저를 시작할 수 있지만 허용을 클릭하면 계속 진행되지만 경고 또는 오류 메시지없이 종료됩니다. STDERR을 기록하는 방법을 알려주시겠습니까? –

    +0

    죄송합니다. pyinstaller에 익숙하지 않습니다. http://www.pyinstaller.org/export/develop/project/doc/Manual.html?format=raw에는 몇 가지 정보가 있습니다. –

    +0

    오류를 추적하지만 SSL 인증서에 대한 내용입니다. –

    관련 문제