pip - фатальная ошибка: leveldb / db.h: нет такого файла или каталога

Понятия не имею, почему он там, но вот как отключить его с помощью реализации GNU bc :

echo '6^6^3' | BC_LINE_LENGTH=0 bc

BC_LINE_LENGTH

Это должно быть целое число, определяющее количество символов в выходной строке для числа. Сюда входят символы обратной косой черты и новой строки для длинных чисел. В качестве расширения нулевое значение отключает многострочную функцию. Любое другое значение этой переменной, меньшее 3, устанавливает длину строки равной 70.

Обновление:

Я был сбит с толку этим вопросом, я думал, что это связано с происхождением многострочной функции, это действительно кажется как странный. В любом случае, реальный ответ заключается в том, что если вы не заключите переменную в кавычки, оболочка выполнит разделение на слова , прежде чем это будет передано в echo . Разделение слов - это процесс, при котором расширение разбивается на «слова» в зависимости от содержимого IFS , эти «слова» затем становятся разными аргументами. В примере с вопросом это создает два аргумента для echo, которые echo затем разделяются пробелом (я знал это до того, как Стефан прокомментировал, честно ...).

Чтобы этого не произошло, просто заключайте переменную в двойные кавычки:

num=$(echo '6^6^3' | bc)
echo "$num"

Иногда это действительно полезно как способ удалить символы IFS из переменной (хотя printf% s более безопасен для произвольных строк). Например (в bash ):

$ var=$'spaces:    newlines:\n\n\ntabs:\t\t\t end'

$ echo "$var"
spaces:    newlines:


tabs:            end
$ newvar="$(printf '%s ' $var)"
$ echo "$newvar"
spaces: newlines: tabs: end
0
12.02.2019, 01:18
1 ответ

Установите зависимость leveldb для plyvel с помощью системного менеджера пакетов перед установкой plyvel с помощью pip:

sudo apt-get install libleveldb-dev
1
28.01.2020, 03:59

Теги

Похожие вопросы