Среда
- ОС: Ubuntu 24.04 (Docker-контейнер)
- Python: 3.11.15 (управляется uv)
- GCC: /opt/conda/bin/x86_64-conda-linux-gnu-c++ (GCC 13+)
- swig: 4.2.0 (устанавливается через apt-get)
- Менеджер пакетов: uv (astral.sh)
Установка smac не удалась, поскольку его зависимостьyrfr==0.9.0 не компилируется. Ошибка представляет собой отклонение строгого режима C++ в пакете RapidJSON зерновых:
Код: Выделить всё
uv add smac
Код: Выделить всё
× Failed to build `pyrfr==0.9.0`
├─▶ The build backend returned an error
╰─▶ Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Deprecated command line option: -modern. Ignored, this option is now always on.
Deprecated command line option: -py3. Ignored, this option is no longer supported.
./include/rfr/nodes/k_ary_node.hpp:1: Warning 401: Nothing known about base class 'k_ary_node_minimal'
In file included from ./include/cereal/archives/json.hpp:56,
from ./include/rfr/forests/regression_forest.hpp:21,
from ./include/rfr/trees/k_ary_tree.hpp:26,
from pyrfr/regression_wrap.cpp:3360:
./include/cereal/external/rapidjson/document.h: In member function
'rapidjson::GenericStringRef& rapidjson::GenericStringRef::operator=(const rapidjson::GenericStringRef&)':
./include/cereal/external/rapidjson/document.h:319:82: error: assignment of read-only member
'rapidjson::GenericStringRef::length'
319 | GenericStringRef& operator=(const GenericStringRef& rhs) { s = rhs.s; length = rhs.length; }
| ~~~~~~~^~~~~~~~~~~~
error: command '/opt/conda/bin/x86_64-conda-linux-gnu-c++' failed with exit code 1
- [/b] — uv не передает переменную env в подпроцесс сборки.
Код: Выделить всё
CXXFLAGS="-fpermissive" uv add smac - [/b] — результат тот же, флаг не доходит до компилятора.
Код: Выделить всё
CXXFLAGS="-fpermissive" uv pip install pyrfr - [/b] — неприменимо, работает в venv, управляемом uv, внутри Docker, а не conda.
Код: Выделить всё
conda install -c conda-forge swig
Код: Выделить всё
pyrfrКод: Выделить всё
lengthВопрос
Как передать -fpermissive (или эквивалент) компилятору C++ при сборке Pyrfr через uv? Альтернативно, существует ли готовое колесо дляpyfr>=0.9.0 в Linux x86_64/Python 3.11?
Я специально ищу решения, которые работают внутри:
- в качестве менеджера пакетов (не напрямую pip, а не conda)
Код: Выделить всё
uv - Контейнер Docker, в котором у меня есть root, но цепочка инструментов сборки взята из conda-forge
Мобильная версия