Я решил, но только делал с помощью cx_Freeze. Все решалось написанием небольшого модуля ca_certs_locater:
import os
import sys
def get():
return os.path.join(os.path.dirname(os.path.abspath(sys.executable if getattr(sys, "frozen", False) else __file__)), "cacerts.txt")
Скрипт для сборки примерно такой:
import os
import httplib2
from cx_Freeze import setup, Executable
setup(
name="Name",
version="1.0.0",
description="Description",
options={
"build_exe": {
"packages": [
"ca_certs_locater", ...
],
"include_files": [
os.path.join(os.path.dirname(os.path.abspath(httplib2.__file__)), "cacerts.txt"),
...
],
"excludes": [
"tkinter"
]
}
},
executables=[
Executable("ExecutableFileName.py")
]
)
Единственное НО: это применимо при использовании httplib2. В других случаях нужно найти в библиотеке место, где указан путь до cacerts и изменить его на нужный (возможно есть такой же хук как у httplib2).