サイトへのログインを含み、CSRF Cookie の設定を必要とする Python プログラムのテストを終了しました。を使用してexeとしてパッケージ化しようとしましたpy2exe
が、ソケットエラーが発生しました。を試してみると、同じ問題が発生しPyInstaller
ます。Errno をグーグルで検索すると、同じ問題を抱えている他の人が何人か見つかりました。そのため、問題は SLL 証明書の場所に関係していることがわかります。
これは、site_agent
ロギング呼び出しを含む私のクラスです。
class site_agent:
self.get_params()
URL = root_url + '/accounts/login/'
# Retrieve the CSRF token first
self.agent = requests.session()
self.agent.get(URL) # retrieves the cookie # This line throws the error
self.csrftoken = self.agent.cookies['csrftoken']
# Set up login data including the CSRF cookie
login_data = {'username': self.username,
'password': self.password,
'csrfmiddlewaretoken' : self.csrftoken}
# Log in
logging.info('Logging in')
response = self.agent.post(URL, data=login_data, headers=hdr)
エラーは次のself.agent.get(URL)
行で発生し、トレースバックには次のように表示されます。
Traceback (most recent call last):
File "<string>", line 223, in <module>
File "<string>", line 198, in main
File "<string>", line 49, in __init__
File "C:\pyinstaller-2.0\pyinstaller-2.0\autoresponder\b
uild\pyi.win32\autoresponder\out00-PYZ.pyz\requests.sessions", line 350, in get
File "C:\pyinstaller-2.0\pyinstaller-2.0\autoresponder\b
uild\pyi.win32\autoresponder\out00-PYZ.pyz\requests.sessions", line 338, in requ
est
File "C:\pyinstaller-2.0\pyinstaller-2.0\autoresponder\b
uild\pyi.win32\autoresponder\out00-PYZ.pyz\requests.sessions", line 441, in send
File "C:\pyinstaller-2.0\pyinstaller-2.0\autoresponder\b
uild\pyi.win32\autoresponder\out00-PYZ.pyz\requests.adapters", line 331, in send
requests.exceptions.SSLError: [Errno 185090050] _ssl.c:336: error:0B084002:x509
certificate routines:X509_load_cert_crl_file:system lib
これは、問題が にあるということrequests.adapters
ですか?
もしそうなら、インストールした Python パッケージでそれを編集して cacert.pem を別の場所で探し、py2exe
またはPyInstaller
で exe を再構築してから、インストールしたバージョンの Python に戻すことはできますか?
編集
all and呼び出しを使用してコンパイルPyInstaller
および設定した後、プログラムが実行されるようになりました。しかし、SSL には何らかの理由があります。誰かにツールを使用させる前に、このエラーを修正できるようにしたいと考えています。verify=False
requests.get()
requests.post()