Я пытаюсь скомпилировать простую программу на Python, которая загружает файлы в корзину S3 с помощью пакета boto в один распространяемый файл .exe.Я открыт для любого метода компиляции.До сих пор я пробовал оба bbfreeze
и py2exe
, и оба дают одинаковые результаты.Код, который вызывает проблемы, выглядит следующим образом:
import boto
#...snip...
fname_base = os.path.basename(fname)
s3 = boto.connect_s3(aws_access_key_id=_aws_key, aws_secret_access_key=_aws_secret_key, is_secure=False);
bucket = s3.get_bucket(_bucket)
key = bucket.new_key(fname_base)
key.set_contents_from_filename(fname)
Скомпилирован с помощью исполняемой утилиты связывания и запускаю, я получаю:
Traceback (most recent call last):
File "s3stash.py", line 238, in <module>
sys.exit(main())
File "s3stash.py", line 225, in main
push_file_to_s3(f, options)
File "s3stash.py", line 160, in push_file_to_s3
_push_with_boto(fname)
File "s3stash.py", line 148, in _push_with_boto
s3 = boto.connect_s3(aws_access_key_id=_aws_key, aws_secret_access_key=_aws_secret_key, is_secure=False);
File "boto\__init__.pyo", line 104, in connect_s3
File "zipextimporter.pyo", line 82, in load_module
File "boto\s3\connection.pyo", line 27, in <module>
File "zipextimporter.pyo", line 82, in load_module
File "boto\utils.pyo", line 55, in <module>
File "email\__init__.pyo", line 79, in __getattr__
ImportError: No module named multipart
Я использую ActiveState Python 2.6 в Windows XPSP3.Пакет boto был установлен с:
easy_installer --always-unzip boto
Я использовал опцию --always-unzip
, основываясь на информации , найденной здесь о py2exe
, имеющей проблемы с распакованными яйцами.К сожалению, я получаю ту же ошибку, когда использую bb-freeze
для создания исполняемого файла.
Вывод py2exe
включает в конце следующую информацию:
The following modules appear to be missing
['_scproxy', 'email.Encoders', 'email.MIMEBase', 'email.MIMEMultipart', 'email.MIMEText', 'email.Utils', 'simplejson']
Что дает некоторые подсказки.Я попробовал методы, предложенные в других постах SO, где опция -i
была рекомендована при компиляции с py2exe
, и, к сожалению, ничего не помогло.В этих других вопросах пользователи делали свое собственное явное включение субмодулей электронной почты.К сожалению, я не мог понять, как адаптировать эти решения к моему случаю, и простое добавление их с помощью -i
не помешало py2exe
предупредить меня о отсутствующих модулях или о том, что полученный пакетный exe-файл не выполнил ошибку отсутствующего модуля.
Может кто-нибудь помочь мне собрать этот код для распространения?