我不知道为什么我不能导入包requests
。在
如果我执行需要requests
库的脚本,它显然会崩溃。在
Web of requests库:
http://docs.python-requests.org/en/latest/
版本Py2exe 0.9.2.2
Python 3.4.3版
我尝试过使用py2exe的其他选项,比如-i requests
我甚至尝试过使用setup.py
形式,但我无法使其工作。在
py -3.4 -m py2exe.build_exe script.py --bundle-files 3
24 missing Modules
------------------
? Cookie imported from requests.compat
? OpenSSL imported from requests.packages.urllib3.contrib.pyopenssl
? Queue imported from requests.packages.urllib3.connectionpool
? _abcoll imported from requests.packages.urllib3.packages.ordered_dict
? backports imported from requests.packages.urllib3.packages.ssl_match_hostname
? certifi imported from requests.certs
? cookielib imported from requests.compat
? dummy_thread imported from requests.packages.urllib3.packages.ordered_dict
? ndg imported from requests.packages.urllib3.contrib.pyopenssl
? netbios imported from uuid
? pyasn1 imported from requests.packages.urllib3.contrib.pyopenssl
? readline imported from cmd, code, pdb
? simplejson imported from requests.compat
? thread imported from requests.packages.urllib3.packages.ordered_dict
? urllib.getproxies imported from requests.compat
? urllib.proxy_bypass imported from requests.compat
? urllib.quote imported from requests.compat
? urllib.quote_plus imported from requests.compat
? urllib.unquote imported from requests.compat
? urllib.unquote_plus imported from requests.compat
? urllib.urlencode imported from requests.compat, requests.packages.urllib3.request
? win32api imported from platform
? win32con imported from platform
? win32wnet imported from uuid
Building 'dist\script.exe'.
如果你的程序崩溃 'FileNotFoundError:[Errno 2]没有此类文件或目录' 问题不是缺少模块,而是SSL验证所需的文件丢失卡塞特·佩姆'.
有人在这篇文章中解释了如何解决这个问题- Requests library: missing file after cx_freeze
我从py2exe切换到cx2exe,因为我发现在cx2exe中处理这个丢失文件的问题更容易。
这是我完整的cx_冻结代码,展示了如何完全实现另一个StackOverflow线程中描述的解决方案,它将解决这个问题卡塞特·佩姆'问题。我确信py2exe中的解决方案是相同的,您只需要找到py2exe等价的cx_freeze“include_files”。也许知道的人可以插嘴帮忙。
这是设置.py文件-
现在,在脚本中向SSL服务器发出请求的任何地方,都必须添加“verify”参数,并将其指向卡塞特·佩姆'文件。
^{pr2}$或者如果您不想进行SSL验证
问题是默认情况下'verify'设置为'True',因此发送它寻找卡塞特·佩姆不存在的文件。
我将.pem文件保存在与可执行文件相同的目录中,并能够直接链接到它,verify='卡塞特·佩姆'. 如果这对您不起作用,或者您想把它放在另一个目录中,有一些解决方案可以在另一个StackOverflow线程中获取exe文件的cwd。
相关问题 更多 >
编程相关推荐