Ответ 1
cx_Freeze делает это, но создает папку с большим количеством зависимостей. py2exe теперь делает это, и с опцией -bundle-files 0 создается только один EXE, что, вероятно, является лучшим решением для вашего вопрос.
ОБНОВЛЕНИЕ: после появления сторонних модулей, которые py2exe не удалось найти, я перешел к pyinstaller, как предлагает kotlet schabowy. Оба имеют достаточную документацию и включают в себя .exe, которые вы можете запускать с параметрами командной строки, но мне еще предстоит скомпилировать script, который pyinstaller не может обрабатывать без отладки или сглаживания головы.
Здесь простая удобная функция, которую я использую для сборки .exe с моими значениями по умолчанию из интерпретатора (конечно, пакет или подобное тоже было бы неплохо):
import subprocess,os
def exe(pyfile,dest="",creator=r"C:\Python34\Scripts\pyinstaller.exe",ico=r"C:\my icons\favicon.ico",noconsole=False):
insert=""
if dest: insert+='--distpath ""'.format(dest)
else: insert+='--distpath "" '.format(os.path.split(pyfile)[0])
if ico: insert+=' --icon="{}" '.format(ico)
if noconsole: insert+=' --noconsole '
runstring='"{creator}" "{pyfile}" {insert} -F'.format(**locals())
subprocess.check_output(runstring)