Ошибка среды SConscript: нет модуля с именем compilation_db

#scons

#scons

Вопрос:

Я пытаюсь скомпилировать проект GitHub: https://github.com/commaai/openpilot , Я получаю сообщение об ошибке при создании среды SCons (вызов Environment()), он указывает на эту строку :

 Environement(
# Other options ...
tools=["default", "cython", "compilation_db"
)
 

Результат scons тогда :

 scons: Reading SConscript files ...
EnvironmentError: No module named compilation_db:
  File "/home/skoumad/openpilot/master/SConstruct", line 213:
    "compilation_db"
  File "/usr/lib/scons/SCons/Environment.py", line 982:
    apply_tools(self, tools, toolpath)
  File "/usr/lib/scons/SCons/Environment.py", line 107:
    env.Tool(tool)
  File "/usr/lib/scons/SCons/Environment.py", line 1788:
    tool = SCons.Tool.Tool(tool, toolpath, **kw)
  File "/usr/lib/scons/SCons/Tool/__init__.py", line 118:
    module = self._tool_module()
  File "/usr/lib/scons/SCons/Tool/__init__.py", line 215:
    raise SCons.Errors.EnvironmentError(error_string)
 

Я попытался установить compilation_db, используя: https://pypi.org/project/scons-compiledb/0.4.7 /
но все та же ошибка:/ .

Есть идеи о том, как установить этот отсутствующий модуль??

С уважением.

Ответ №1:

Скорее всего, у вас версия SCons старше 4.0.0

compilation_db Инструмент был добавлен в версии 4.0.0

См. Уведомление о выпуске

Если у вашего дистрибутива (linux, python, macports и т. Д.) Нет версии 4.0.0 или новее, я бы посоветовал настроить python virtualenv (нет, это не виртуальная машина, это просто инструмент для создания чистой среды python для установки пакетов)

Вот как это сделать:

 # assuming posix system, for win32, of course change the path to windows correct syntax
# also the python below should be 3.5 or newer, generally it's best to use the newest installed
python -m venv ~/sconsvenv 
. ~/sconsvenv/bin/activate
pip install  scons

scons --version

# should yield

SCons by Steven Knight et al.:
    SCons: v4.1.0.post1.dc58c175da659d6c0bb3e049ba56fb42e77546cd, 2021-01-20 04:32:28, by bdbaddog on ProDog2020
    SCons path: ['/Users/bdbaddog/sconsvenv/lib/python3.8/site-packages/SCons']
Copyright (c) 2001 - 2021 The SCons Foundation
 

Комментарии:

1. Привет, спасибо, и да, вы правы, у меня старая версия (3.0.1), я использовал apt get install, и он сообщает, что это последняя версия (scons уже самая новая версия (3.0.1-2). ), Я попытаюсь выполнить apt get update.

2. Скорее всего, вы не получите более новую версию из своего дистрибутива.. Я добавлю информацию выше.

3. Большое спасибо за оцененные усилия ^^. Используя virtualenv, я получил: Успешно установлен scons-4.1.0.post1, но при попытке scons -version он по-прежнему остается старым: $ scons -version SCons от Steven Knight и др.: script: v3.0.1.74b

4. Переустановка его с помощью apt-get autoremove, а затем apt get install scons каким-то образом устранила проблему, я вижу, что теперь двоичный файл scons вызывается из myenv ^^. Большое спасибо за отличную поддержку =)

5. Вам необходимо активировать virtualenv, чтобы получить недавно установленные scons в вашем path. В противном случае вы получите SCONS из вашей системной установки (и ПУТИ). Или вы можете явно запускать scons из ~/sconsvenv/bin/scons