'Installing pikepdf on Elastic Beanstalk
I first tried adding pikepdf in requirements.txt
src/qpdf/annotation.cpp:14:10: fatal error: qpdf/QPDFAnnotationObjectHelper.hh: No such file or directory
I think it was missing a dependency. So I tried installing qpdf using yum install qpdf-devel
However, that is only able to install version 5.0.1, and there is a requirement of qpdf 10.6.2.
Then, I tried to build qpdf from the source.
packages:
yum:
python3-devel: []
git: []
gcc-c++: []
libjpeg-turbo-devel: []
container_commands:
01_upgrade_pip:
command: "source /var/app/venv/*/bin/activate && python -m pip install --upgrade pip"
leader_only: true
04_wget:
command: "wget https://github.com/qpdf/qpdf/releases/download/release-qpdf-10.6.2/qpdf-10.6.2.tar.gz"
05_targxf:
command: "tar -xf qpdf-10.6.2.tar.gz"
06_cd:
command: |
cd qpdf-10.6.2
./configure
make
sudo make install
sudo ldconfig
07_pikepdf:
command: "source /var/app/venv/*/bin/activate && python -m pip install pikepdf"
With this, I believe I made some progress as the code deployed, but in the page I tried to load pikepdf, there was an error.
from . import _qpdf
ImportError: /var/app/venv/staging-LQM1lest/lib64/python3.8/site-packages/pikepdf/_qpdf.cpython-38-aarch64-linux-gnu.so: undefined symbol: _ZTIN16QPDFObjectHandle15ParserCallbacksE
...
raise ImportError(_msg) from _e
ImportError: pikepdf's extension library failed to import
Here's what I got when building, I believe qpdf built correctly:
libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
Is there another way?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
