簡體   English   中英

如何從 Docker 運行浮士德 - 錯誤:python-rocksdb 的構建輪失敗

[英]How to run Faust from Docker - ERROR: Failed building wheel for python-rocksdb

我正在嘗試從 Docker 運行 Python Faust。

基於此文檔: https://faust.readthedocs.io/en/latest/userguide/installation.html

我創建了一個簡單的 Docker 文件:

FROM python:3

ADD ./app/app.py /

RUN pip3 install --upgrade pip

RUN pip install -U faust

RUN pip install "faust[rocksdb]"

RUN pip install "faust[rocksdb,uvloop,fast,redis]"

CMD ["python", "./app.py"]

當我創建 docker 文件時,我在第 5 階段收到錯誤(步驟 5/7:運行 pip 安裝“faust[rocksdb]”)

---> 在 1e42a5e50cbe 中運行 已滿足要求:/usr/local/lib/python3.10/site-packages (1.10.4) 中的 faust[rocksdb] 已滿足要求:/usr/ 中的 terminaltables<4.0,>=3.1 local/lib/python3.10/site-packages (from faust[rocksdb]) (3.1.10) 已經滿足要求:點擊/usr/local/lib/python3.10/site-packages中的<8.0,>=6.7 (來自 faust[rocksdb]) (7.1.2) 要求已經滿足:yarl<2.0,>=1.0 in /usr/local/lib/python3.10/site-packages (來自 faust[rocksdb]) (1.7.2) 要求已經滿足:/usr/local/lib/python3.10/site-packages 中的 aiohttp-cors<2.0,>=0.7(來自 faust[rocksdb])(0.7.0) 已經滿足要求:/usr/ 中的 mypy-extensions local/lib/python3.10/site-packages (from faust[rocksdb]) (0.4.3) 已經滿足要求:colorclass<3.0,>=2.2 in /usr/local/lib/python3.10/site-packages (來自 faust[rocksdb]) (2.2.2) 要求已經滿足:/usr/local/lib/python3.10/site-packages 中的 opentracing<2.0.0,>=1.3.0 (來自 faust[rocksdb]) (1.3 .0) 重新已滿足要求:/usr/local/lib/python3.10/site-packages 中的 mode<4.4,>=4.3.2(來自 faust[rocksdb])(4.3.2) 已滿足要求:venusian<2.0,>= /usr/local/lib/python3.10/site-packages 中的 1.1 (來自 faust[rocksdb]) (1.2.0) 已滿足要求:/usr/local/lib/python3 中的 aiohttp<4.0,>=3.5.2 .10/site-packages (來自 faust[rocksdb]) (3.8.1) 要求已經滿足:robinhood-aiokafka<1.2,>=1.1.6 in /usr/local/lib/python3.10/site-packages (來自faust[rocksdb]) (1.1.6) 要求已經滿足:croniter>=0.3.16 in /usr/local/lib/python3.10/site-packages (from faust[rocksdb]) (1.1.0) 收集 python- rockdb>=0.6.7 正在下載 python-rocksdb-0.7.0.tar.gz (219 kB) 准備元數據 (setup.py): 開始 准備元數據 (setup.py): 完成狀態“完成” 已滿足要求: aiosignal >=1.1.2 in /usr/local/lib/python3.10/site-packages (from aiohttp<4.0,>=3.5.2->faust[rocksdb]) (1.2.0) 要求已經滿足:attrs>= 17.3.0 在 /usr/loc al/lib/python3.10/site-packages (來自 aiohttp<4.0,>=3.5.2->faust[rocksdb]) (21.2.0) 已經滿足要求:frozenlist>=1.1.1 in /usr/local/ lib/python3.10/site-packages (from aiohttp<4.0,>=3.5.2->faust[rocksdb]) (1.2.0) 要求已經滿足:charset-normalizer<3.0,>=2.0 in /usr/local /lib/python3.10/site-packages (from aiohttp<4.0,>=3.5.2->faust[rocksdb]) (2.0.9) 要求已經滿足:multidict<7.0,>=4.5 in /usr/local/ lib/python3.10/site-packages (from aiohttp<4.0,>=3.5.2->faust[rocksdb]) (5.2.0) 要求已經滿足:async-timeout<5.0,>=4.0.0a3 in /usr /local/lib/python3.10/site-packages (from aiohttp<4.0,>=3.5.2->faust[rocksdb]) (4.0.2) 要求已經滿足:/usr/local/lib/ 中的 python-dateutil python3.10/site-packages (from croniter>=0.3.16->faust[rocksdb]) (2.8.2) 已經滿足要求:colorlog>=2.9.0 in /usr/local/lib/python3.10/site -packages (from mode<4.4,>=4.3.2->faust[rocksdb]) (6.6.0) 已經滿足要求:setuptools>=25在 /usr/local/lib/python3.10/site-packages (from python-rocksdb>=0.6.7->faust[rocksdb]) (57.5.0) 要求已經滿足:kafka-python<1.5,>=1.4 /usr/local/lib/python3.10/site-packages 中的 .6 (來自 robinhood-aiokafka<1.2,>=1.1.6->faust[rocksdb]) (1.4.7) 已滿足要求:idna>=2.0在 /usr/local/lib/python3.10/site-packages 中(來自 yarl<2.0,>=1.0->faust[rocksdb])(3.3) 已滿足要求:/usr/local/lib/ 中的六個>=1.5 python3.10/site-packages (來自 python-dateutil->croniter>=0.3.16->faust[rocksdb]) (1.16.0)

還有一個錯誤部分

為收集的包構建輪子:python-rocksdb 為 python-rocksdb (setup.py) 構建輪子:已啟動錯誤:命令錯誤退出狀態為 1:命令:/usr/local/bin/python -u -c 'import io,操作系統、系統、設置工具、標記化; sys.argv[0] = '"'"'/tmp/pip-install-b8y7g4hs/python-rocksdb_b1c08993fd134ac4bc59e6f5d18bcd91/setup.py'"'"'; file ='"'"'/tmp/pip-install-b8y7g4hs/python-rocksdb_b1c08993fd134ac4bc59e6f5d18bcd91/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)( file ) if os.path.exists( file ) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'" '\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"' ))' bdist_wheel -d /tmp/pip-wheel-9_o4ek6z cwd: /tmp/pip-install-b8y7g4hs/python-rocksdb_b1c08993fd134ac4bc59e6f5d18bcd91/ Complete output (64 lines): running build
運行 build_py 創建 build 創建 build/lib.linux-x86_64-3.10 創建 build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/interfaces.py -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/errors。 py -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/merge_operators.py -> build/lib.linux-x86_64-3.10/rocksdb
復制rocksdb/ init .py -> build/lib.linux-x86_64-3.10/rocksdb
創建 build/lib.linux-x86_64-3.10/rocksdb/tests 復制rocksdb/tests/test_memtable.py -> build/lib.linux-x86_64-3.10/rocksdb/tests 復制rocksdb/tests/test_db.py -> build/lib .linux-x86_64-3.10/rocksdb/tests 復制rocksdb/tests/ init .py -> build/lib.linux-x86_64-3.10/rocksdb/tests 復制rocksdb/tests/test_options.py -> build/lib.linux-x86_64 -3.10/rocksdb/tests 運行 egg_info 寫入 python_rocksdb.egg-info/PKG-INFO 寫入 dependency_links 到 python_rocksdb.egg-info/dependency_links.txt 寫入要求到 python_rocksdb.egg-info/requires.txt 寫入頂級名稱到 python_rocksdb。 egg-info/top_level.txt 讀取清單文件'python_rocksdb.egg-info/SOURCES.txt' 讀取清單模板'MANIFEST.in' 寫入清單文件'python_rocksdb.egg-info/SOURCES.txt' 復制rocksdb/_rocksdb.cpp - > build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/ rocksdb.pyx -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/backup.pxd -> build/lib.linux-x86_64-3.10/rocksdb復制 rockdb/cache.pxd -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/comparator.pxd -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/db.pxd -> build/lib.linux -x86_64-3.10/rocksdb 復制rocksdb/env.pxd -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/filter_policy.pxd -> build/lib.linux-x86_64-3.10/rocksdb
復制rocksdb/iterator.pxd -> build/lib.linux-x86_64-3.10/rocksdb
復制rocksdb/logger.pxd -> build/lib.linux-x86_64-3.10/rocksdb
復制rocksdb/memtablerep.pxd -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/merge_operator.pxd -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/options.pxd -> build/lib。 linux-x86_64-3.10/rocksdb 復制rocksdb/slice .pxd -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/slice_transform.pxd -> build/lib.linux-x86_64-3.10/rocksdb
復制rocksdb/snapshot.pxd -> build/lib.linux-x86_64-3.10/rocksdb
復制rocksdb/status.pxd -> build/lib.linux-x86_64-3.10/rocksdb
復制rocksdb/std_memory.pxd -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/table_factory.pxd -> build/lib.linux-x86_64-3.10/rocksdb 復制rocksdb/universal_compaction.pxd -> build/lib。 linux-x86_64-3.10/rocksdb 創建 build/lib.linux-x86_64-3.10/rocksdb/cpp 復制rocksdb/cpp/comparator_wrapper.hpp -> build/lib.linux-x86_64-3.10/rocksdb/cpp 復制rocksdb/cpp/filter_policy_wrapper .hpp -> build/lib.linux-x86_64-3.10/rocksdb/cpp 復制rocksdb/cpp/memtable_factories.hpp -> build/lib.linux-x86_64-3.10/rocksdb/cpp 復制rocksdb/cpp/merge_operator_wrapper.hpp -> build/lib.linux-x86_64-3.10/rocksdb/cpp 復制rocksdb/cpp/slice_transform_wrapper.hpp -> build/lib.linux-x86_64-3.10/rocksdb/cpp 復制rocksdb/cpp/utils.hpp -> build/lib。 linux-x86_64-3.10/rocksdb/cpp
復制rocksdb/cpp/write_batch_iter_helper.hpp -> build/lib.linux-x86_64-3.10/rocksdb/cpp 運行 build_ext
將rocksdb/_rocksdb.pyx 轉換為rocksdb/_rocksdb.cpp
/tmp/pip-install-b8y7g4hs/python-rocksdb_b1c08993fd134ac4bc59e6f5d18bcd91/.eggs/Cython-0.29.26-py3.10-linux-x86_64.egg/Cython/Compiler/Main.py:369:FutureWarning:Cython指令'language_level'不設置,現在使用 2 (Py2)。 這將在以后的版本中更改:文件。 /tmp/pip-install-b8y7g4hs/python-rocksdb_b1c08993fd134ac4bc59e6f5d18bcd91/rocksdb/_rocksdb.pyx tree = Parsing,p_module(s, pxd.full_module_name) building 'rocksdb._rocksdb' extension 創建 build/temp.linux-x86_64-3.10
創建 build/temp.linux-x86_64-3.10/rocksdb gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include/python3.10 - c rockdb/_rocksdb.cpp -o build/temp.linux-x86_64-3.10/rocksdb/_rocksdb.o -std=c++11 -O3 -Wall -Wextra -Wconversion -fno-strict-aliasing -fno-rtti rocksdb/ _rocksdb.cpp:705:10:致命錯誤:rocksdb/slice.h:沒有這樣的文件或目錄 705 | #include "rocksdb/slice.h" | ^~~~~~~~~~~~~~~~~ 編譯終止。 錯誤:命令“/usr/bin/gcc”失敗,退出代碼為 1
---------------------------------------------------- python-rocksdb (setup.py) 的構建輪):完成狀態“錯誤”錯誤:python-rocksdb 的構建輪失敗

任何人都可以幫助我繼續前進嗎? 我想在 Kubernetes 上使用來自 Docker 的浮士德。

閱讀錯誤消息,其中明確指出您缺少 header 文件:

致命錯誤:rocksdb/slice.h:沒有這樣的文件或目錄 705 | #include "rocksdb/slice.h" | ^~~~~~~~~~~~~~~~~ 編譯終止。 錯誤:命令“/usr/bin/gcc”失敗,退出代碼為 1

因此,您需要構建和安裝RocksDB。 這與使用 pip 安裝faust[rocksdb]是分開的。 這只需安裝python-rocksdb ,即 Python 到底層庫的接口。

甚至還有基於 Python 3.7 Slim 的(第三方)RocksDB docker 圖像

您可以直接使用它或從Dockerfile中為該圖像采取一些技巧。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM