用于创建和与ZIM文件交互的pythonfacing API
libzim的Python项目详细描述
python libzim公司
^{
这个库允许您通过Python与.zim
文件交互。在
它只是在^ {< CD1>} C++库的顶部提供了一个浅的Python接口(由{A2}维护)。在
它主要由^{
安装
# Install from PyPI: https://pypi.org/project/libzim/
pip3 install libzim
快速启动
读卡器API
^{pr2}$编写eh3 API>
有关writer API的基本用法,请参见example。在
用户文档
安装:Ubuntu/Debian和macOS x86_64
(推荐)
从PyPI安装pythonlibzim
包。在
pip3 install libzim
x86_64
linux和macOS控制盘自动包含libzim.(so|dylib)
dylib和头文件,但其他平台可能需要手动安装libzim
及其头文件。在
手动安装libzim
dylib和头文件
如果您不在linux或macOS x86_64
平台上,则必须手动安装libzim。在
或者通过在https://download.openzim.org/release/libzim获取预构建的二进制文件
或者compile ^{
如果没有在标准目录中安装libzim,则必须设置LD_LIBRARY_PATH
以允许python查找库:
如果LIBZIM_DIR:
exportLD_LIBRARY_PATH="${LIBZIM_DIR}/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
设置:Docker(可选)
docker build . --tag openzim:python-libzim # Run a custom script inside the container docker run -it openzim:python-libzim ./some_example_script.py # Or use the python repl interactively docker run -it openzim:python-libzim >>> import libzim
开发人员文档
这些说明适用于python-libzim
源代码本身的开发人员。如果您只是库的用户,并且不打算更改其内部源代码,请按照上面的用户文档说明进行操作。
安装程序:Ubuntu/Debian
注意:确保首先安装了libzim
dylib+头(见上文)。
apt install coreutils wget git ca-certificates \ g++ pkg-config libtool automake autoconf make meson ninja-build \ liblzma-dev zlib1g-dev libicu-dev libgumbo-dev libmagic-dev pip3 install --upgrade pip pipenv exportCFLAGS="-I${LIBZIM_DIR}/include"exportLDFLAGS="-L${LIBZIM_DIR}/lib/x86_64-linux-gnu" git clone https://github.com/openzim/python-libzim cd python-libzim python setup.py build_ext pipenv install --dev pipenv run pip install -e .
设置:Docker
docker build . -f Dockerfile.dev --tag openzim:python-libzim-dev docker run -it openzim:python-libzim-dev ./some_example_script.py docker run -it openzim:python-libzim-dev $ black . && flake8 . && pytest . $ pipenv install --dev <newpackagehere> $ python setup.py build_ext $ python setup.py sdist bdist_wheel $ python setup.py install $ python -c "import libzim"
常见任务
运行Linters&Tests
# Autoformat code with black black --exclude=setup.py . # Lint and check for errors with flake8 flake8 --exclude=setup.py . # Typecheck with mypy (optional) mypy . # Run tests pytest .
在开发期间重建Cython扩展
rm libzim/libzim.cpp rm -Rf build rm -Rf *.so python setup.py build_ext python setup.py install
为PyPI
python setup.py build_ext
python setup.py sdist bdist_wheel
# upload to PyPI (caution: this is done automatically via Github Actions)
twine upload dist/*
在编译python-libzim
exportCFLAGS="-I${LIBZIM_DIR}/include"exportLDFLAGS="-L${LIBZIM_DIR}/lib/x86_64-linux-gnu"exportLD_LIBRARY_PATH="${LIBZIM_DIR}/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" python setup.py build_ext python setup.py install
进一步阅读
相关项目
- https://github.com/openzim/sotoki
- https://framagit.org/mgautierfr/pyzim
- https://github.com/pediapress/pyzim
- https://github.com/jarondl/pyzimmer/blob/master/pyzimmer/zim_writer.py
研究
- https://github.com/cython/cython/wiki/AutoPxd
- https://www.youtube.com/watch?v=YReJ3pSnNDo
- https://github.com/openzim/zim-tools/blob/master/src/zimrecreate.cpp
- https://github.com/cython/cython/wiki/enchancements-inherit_CPP_classes
- https://groups.google.com/forum/#!topic/cython-users/vAB9hbLMxRg
调试
- https://cython.readthedocs.io/en/latest/src/userguide/debugging.html
- https://github.com/cython/cython/wiki/DebuggingTechniques
- https://stackoverflow.com/questions/2663841/python-tracing-a-segmentation-fault
- https://cython-devel.python.narkive.com/cW3Cn1th/debugging-a-segfault-in-a-cython-generated-module
- https://groups.google.com/forum/#!topic/cython-users/B_Sxj2NV1PE
包装
- https://download.openzim.org/release/libzim/
- https://cibuildwheel.readthedocs.io/en/stable/faq/
- https://github.com/pypa/manylinux
- https://github.com/RalfG/python-wheels-manylinux-build/blob/master/full_workflow_example.yml
- https://packaging.python.org/guides/packaging-binary-extensions/#publishing-binary-extensions
许可证
GPLv3或更高版本,请参阅 LICENSE获取更多详细信息。在
- 项目
标签: