Python 2.7 извлечь файл .xz (в Windows) без использования lzma

1

У меня есть программа, которая требует распаковки сжатого архива.xz. Как распаковать файл.xz с несколькими папками/файлами внутри, за один раз? , Я прочитал, что этого можно добиться, используя lzma через pip install pyliblzma однако кажется, что это повреждено Windows при установке через pip.

Collecting pyliblzma
Using cached https://files.pythonhosted.org/packages/17/48/5292ade507dafe573360560ba53783395587dc42eb32b347feb2ac70fc6b/pyliblzma-0.5.3.tar.bz2
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "c:\users\ben\appdata\local\temp\pip-install-_hmrno\pyliblzma\setup.py", line 48, in <module>
    shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True).stdout.read():
  File "c:\python27\lib\subprocess.py", line 347, in __init__
    raise ValueError("close_fds is not supported on Windows "
ValueError: close_fds is not supported on Windows platforms if you redirect stdin/stdout/stderr

Я также попробовал pip install pylzma но для этого требуется компилятор Visual Studio C++ для building 'pylzma' extension error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27 Pylzma для Python building 'pylzma' extension error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27 building 'pylzma' extension error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27

Поскольку моя программа переносима и разделена между пользователями, я хочу попытаться держаться подальше от их установки отдельных двоичных файлов для использования с программой.

Есть ли другой способ взыскать.xz-архивы в Python2.7 без использования lzma, или, альтернативно, способ получить рабочую версию lzma через pip install?

Теги:
python-2.7
lzma

1 ответ

0

Мне удалось обойти мою проблему, используя портативную версию 7zip и используя ее интерфейс командной строки для извлечения файлов.

params = ["7zG.exe", "x", "my_filename.xz", "-ooutputdir\\"]
p = Popen(params, stdout=subprocess.PIPE)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню