2

EDIT:

So I ended up just using Portable Python. My goal was to run a Python script on a Windows Server that doesn't have Python installed, and that's what PP can do. Not really a solution to my original question, but if someone else runs in to the same issue that's one way to solve it.

I've built a python program that uses the requests library. It works fine when I run it normally, but not after freezing it to an executable with cx_freeze.

I've already looked at and tried the answers from these questions:

requests library | frozen app | requests & cx_freeze

So neither adding:

import requests.certs
build_exe_options = {"include_files" : [(requests.certs.where(),'cacert.pem')]}

nor

os.environ["REQUESTS_CA_BUNDLE"] = os.path.join(os.getcwd(), "cacert.pem")

are working for me.

My request looks like this:

def get_response(id = constant_id, token = constant_token, page = None):
    url = 'https://scm.commerceinterface.com/api/v2/get_orders'
    return requests.get(url, params = {'supplier_id':id, 'token':token, 'page':page }).json()

so I'm not even passing it the verify = parameter and it works as a python program...

Here is the error(s) returned when I run the executable:

  File "C:\Python34\lib\site packages\requests\packages\urllib3\util\ssl_.py", line 267, in ssl_wrap_socket  
context.load_verify_locations(ca_certs)
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\requests\adapters.py", line 370, in send
timeout=timeout
File "C:\Python34\lib\site  
packages\requests\packages\urllib3\connectionpool.p
y", line 539, in urlopen
self._prepare_proxy(conn)
File "C:\Python34\lib\site- 
packages\requests\packages\urllib3\connectionpool.p
y", line 727, in _prepare_proxy
conn.connect()
File "C:\Python34\lib\site- 
packages\requests\packages\urllib3\connection.py",
line 238, in connect
ssl_version=resolved_ssl_version)
File "C:\Python34\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 269, in ssl_wrap_socket
raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: [Errno 2] No such file or  directory

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\cx_Freeze\initscripts\Console.py", line 
27, in <module> exec(code, m.__dict__)
File "main.py", line 49, in <module>
File "main.py", line 18, in get_response
File "C:\Python34\lib\site-packages\requests\api.py", line 69, in get
return request('get', url, params=params, **kwargs)
File "C:\Python34\lib\site-packages\requests\api.py", line 50, in request
response = session.request(method=method, url=url, **kwargs)
File "C:\Python34\lib\site-packages\requests\sessions.py", line 465, in  
request
resp = self.send(prep, **send_kwargs)
File "C:\Python34\lib\site-packages\requests\sessions.py", line 573, in send
r = adapter.send(request, **kwargs)
File "C:\Python34\lib\site-packages\requests\adapters.py", line 431, in send
raise SSLError(e, request=request) requests.exceptions.SSLError: [Errno 2]  No such file or directory
Community
  • 1
  • 1
James
  • 411
  • 4
  • 20
  • You need the include_files bit *and* setting the environment variable in your program to tell requests where to find it. And you shouldn't rely on it being in the CWD. Alternatively, if you are trying to distribute an application on Windows, I'll plug my tool [Pynsist](http://pynsist.readthedocs.org/en/latest/), which gets round this issue. – Thomas K Jun 25 '15 at 18:09

0 Answers0