Как правильно импортировать последнюю версию архива для использования в Mac OS
В примечаниях к выпуску libarchive говорится, что из-за того, что в MacOS включена более старая версия libarchive, они рекомендуют изменить LD_LIBRARY_PATH, чтобы он указывал на местоположение последней копии libarchive.
Я использовал этот код, чтобы попытаться добиться этого, но я получаю сообщение об ошибке при запуске сценария.
import os
print os.environ.get('LD_LIBRARY_PATH') #Check what the current path is
os.environ['LD_LIBRARY_PATH'] = '/Library/Python/2.7/site-packages/'
print os.environ.get('LD_LIBRARY_PATH') #Check the variable has been set
import libarchive.public
Ошибка:
None
/Library/Python/2.7/site-packages/
Traceback (most recent call last):
File "scratch.py", line 8, in <module>
import libarchive.public
File "/Library/Python/2.7/site-packages/libarchive/public.py", line 1, in <module>
from libarchive.adapters.archive_read import \
File "/Library/Python/2.7/site-packages/libarchive/adapters/archive_read.py", line 7, in <module>
import libarchive.calls.archive_read
File "/Library/Python/2.7/site-packages/libarchive/calls/archive_read.py", line 17, in <module>
c_archive_read_support_filter_all = libarchive.archive_read_support_filter_all
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 378, in __getattr__
func = self.__getitem__(name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 383, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: dlsym(0x7fb08b741000, archive_read_support_filter_all): symbol not found
Я не могу найти отличный ответ на это где-либо там.
1 ответ
Это не ясно из документации инструмента, но основано на потоке: https://github.com/dsoprea/PyEasyArchive/issues/16 Я установил другую переменную окружения в том месте, где могла бы быть найдена базовая библиотека c. В моем случае это было помещено там доморощенным на моем Mac.
os.environ['LA_LIBRARY_FILEPATH']='/usr/local/opt/libarchive/lib/libarchive.dylib'
import libarchive.public
работал на меня.