Search code examples
pythonmachine-learningarchive7zip

libarchive.public error even after installing libarchive in python


I am getting an error when I am trying to do import libarchive.public. The below is the log text. I have installed libarchive using pip install libarchive. The help command shows the presence of public module in the library but while importing it still gives error. Can anyone help me on this what is the error about. I think I have done everything correctly.


WindowsError                              Traceback (most recent call last)
<ipython-input-10-bd7a0027d55f> in <module>()
----> 1 import libarchive.public

C:\Users\soumya\AppData\Local\Enthought\Canopy\User\lib\site-packages\libarchive\public.py in <module>()
----> 1 from libarchive.adapters.archive_read import       2     file_enumerator, file_reader, file_pour,       3     memory_enumerator, memory_reader, memory_pour
      4 
      5 from libarchive.adapters.archive_write import 
C:\Users\soumya\AppData\Local\Enthought\Canopy\User\lib\site-packages\libarchive\adapters\archive_read.py in <module>()
      5 import libarchive.constants.archive
      6 import libarchive.exception
----> 7 import libarchive.calls.archive_read
      8 import libarchive.calls.archive_write
      9 import libarchive.calls.archive_general

C:\Users\soumya\AppData\Local\Enthought\Canopy\User\lib\site-packages\libarchive\calls\archive_read.py in <module>()
      1 from ctypes import *
      2 
----> 3 from libarchive.library import libarchive
      4 from libarchive.types.archive import *
      5 from libarchive.constants.archive import *

C:\Users\soumya\AppData\Local\Enthought\Canopy\User\lib\site-packages\libarchive\library.py in <module>()
     14 
     15 _logger.debug("Using library: [%s]", _FILEPATH)
---> 16 libarchive = ctypes.cdll.LoadLibrary(_FILEPATH)

C:\Users\soumya\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.1.2730.win-x86_64\lib\ctypes\__init__.pyc in LoadLibrary(self, name)
    441 
    442     def LoadLibrary(self, name):
--> 443         return self._dlltype(name)
    444 
    445 cdll = LibraryLoader(CDLL)

C:\Users\soumya\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.1.2730.win-x86_64\lib\ctypes\__init__.pyc in __init__(self, name, mode, handle, use_errno, use_last_error)
    363 
    364         if handle is None:
--> 365             self._handle = _dlopen(self._name, mode)
    366         else:
    367             self._handle = handle

WindowsError: [Error 126] The specified module could not be found 

Solution

  • I had to do it on Linux Mint as I could not find a solution for windows. The modified answer is below.
    
    # Install compiler and tools
    $ sudo apt-get install build-essential libtool python-dev
    
    # Install cmake
    $ sudo apt-get install cmake
    
    $ wget https://github.com/libarchive/libarchive/releases/download/v3.4.1/libarchive-3.4.1.tar.xz
    $ tar -xJf libarchive-3.4.1.tar.xz
    
    # Configure using cmake...
    $ mkdir build
    $ cd build
    $ cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../libarchive-3.4.1
    
    # Now compile and install...
    $ make
    $ sudo make install
    
    $ sudo sh -c 'echo /usr/local/lib > /etc/ld.so.conf.d/libarchive3.conf'
    $ sudo ldconfig
    
    $pip install python-libarchive
    

    Latest libarchive download link can be found at this URL: http://www.linuxfromscratch.org/blfs/view/svn/general/libarchive.html