Ошибка ОС подпроцесса Python: [Ошибка 2] Нет такого файла или каталога

#python

#python

Вопрос:

Я пробую небольшую программу на Python для шифрования и дешифрования zip-файла с использованием 7 zip, и вот сценарий:

 import zipfile
import os
import subprocess

os.environ['ZIP_ENCRYPT_PASS'] = 'test'
password = os.environ['ZIP_ENCRYPT_PASS']

# Step 1: Encrypt the file using AES256
rc = subprocess.call(['7z', 'a', '-mem=AES256', password, '-y', 'myarchive.zip']   
                     ['/Users/joe/Projects/Sandbox/python-projects/test.txt', '/Users/joe/Projects/Sandbox/python-projects/some.txt'])


# Step 2: Decrypt the archive
f = zipfile.ZipFile('myarchive.zip').extractall(pwd=password)
  

Когда я попытался запустить этот скрипт, я получаю сообщение об ошибке, как показано ниже:

 Joes-MacBook-Pro:python-projects joe$ python ./test.py
Traceback (most recent call last):
  File "./test.py", line 10, in <module>
    ['/Users/joe/Projects/Sandbox/python-projects/test.txt', '/Users/joe/Projects/Sandbox/python-projects/some.txt'])
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
  

Я попытался запустить этот скрипт как:

 python test.py

python ./test.py
  

Оба подхода привели меня к одному и тому же сообщению об ошибке! Оба файла, которые я пытаюсь заархивировать, существуют, и я даже предоставил полные разрешения для этих файлов!

Есть ли что-нибудь, чего мне не хватает, и как избавиться от этой досадной ошибки?

Комментарии:

1. Не могли бы вы попробовать указать abspath 7z для подпроцесса call ? /usr/bin/7z ?

2. Как я могу добавить это в качестве зависимости в Python?

3. Как вы можете добавить what в качестве dependency ?

4. Я не хочу использовать 7z из базовой ОС, скорее я хочу это как библиотеку, которую я могу запускать где угодно!

5. Если программа не установлена по умолчанию PATH , она не сможет ее найти