Zip с зависимостями и разрешениями в Python - PullRequest
1 голос
/ 09 июля 2019

Я пытаюсь автоматизировать процесс, чтобы сжать файл Python и все его зависимости с разрешениями 755. (Причина этого заключается в том, чтобы загрузить их для AWS Lambda, для которого требуется 755 разрешений для файла).

Если бы я просто хотел заархивировать зависимости, я бы просто запустил

zip -r9 ${OLDPWD}/function.zip .

И, начиная с Как установить разрешения (атрибуты) для файла в ZIP-файле с помощью модуля Python zipfile? Мне удалось написать скрипт Python для архивирования с разрешениями, используя

def main(lambda_filename):
    zipname = lambda_filename + ".zip"
    filename = lambda_filename + ".py"

    zip = zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED)

    f = open(filename, 'r')
    bytes = f.read()
    f.close()

    info = zipfile.ZipInfo(filename)
    info.external_attr = 0o755 << 16

    zip.writestr(info, bytes, zipfile.ZIP_DEFLATED)

    zip.close()    

if __name__ == "__main__":
    filename = sys.argv[1]
    main(filename)

Но как мне объединить эти два, чтобы я мог сжать все свои зависимости и затем добавить свой файл с разрешениями 755? Есть ли какой-нибудь способ, которым я могу запустить свой zip -r9, а затем добавить свой файл позже без перезаписи?

Спасибо!

...