2016-03-14 8 views
0

У меня проблемы с Pyunpack.Python 7z Pyunpack TypeError

Переменная thing - это путь к файлу 7z.

from pyunpack import Archive 
Archive(thing).extractall(str(thing[0:thing.rfind('/')])) 

Этот код предназначен для извлечения файла 7z в его каталог.

В этом случае thing относительный путь: ./relative/path/my_7z_file.7z

Это возвращает смутное TypeError:

Traceback (most recent call last): 
    File "importItAll.py", line 33, in <module> 
    Archive(thing).extractall(str(thing[0:thing.rfind('/')])) 
    File "/usr/local/lib/python2.7/dist-packages/pyunpack/__init__.py", line 74, in extractall 
    self.extractall_patool(directory, patool_path) 
    File "/usr/local/lib/python2.7/dist-packages/pyunpack/__init__.py", line 41, in extractall_patool 
    '--outdir=' + directory, 
    File "/usr/local/lib/python2.7/dist-packages/easyprocess/__init__.py", line 108, in __init__ 
self.cmd_as_string = ' '.join(self.cmd) # TODO: not perfect 
TypeError: sequence item 1: expected string, NoneType found 

ответ

1

Взглянув на код для pyunpack.Archive кода. Казалось бы, вам не хватает patool зависимости библиотеки. Это, как представляется, ошибка в pyunpack, где он будет возвращать None для функции, вместо того, чтобы дать полезное сообщение об ошибке:

def _exepath(cmd): for p in os.environ['PATH'].split(os.pathsep): fullp = os.path.join(p, cmd) if os.access(fullp, os.X_OK): return fullp

Который является поведением по умолчанию для любой функции в Python, который не имеет вернуть. Чтобы устранить проблему, необходимо установить зависимость patool с pip install patool или easy_install patool.

+0

Я установил patool, и мой код теперь работает отлично. Спасибо! –