Повышение установлено через Повышение. Numpy, не совместимый с более новой версией

Я установил Повышение. Numpy на Повышении 1.54 (libboost-all-dev) на Ubuntu 14.04.

Эта версия Numpy устанавливает библиотеку в структуре, что можно вызвать его как это в C++:

#include <boost/numpy.hpp>

Более новая версия Повышения (т.е. Повышения 1.64 +), который идет с предварительно установленным Numpy, использует другую структуру, которая имеет формат:

#include <boost/python/numpy.hpp>

Это кажется этим имеющим Повышение. Numpy на Повышении 1.58 не совместим с кодом, который предполагает, что Numpy установлен через более новую версию Повышения (т.е. boost/python/numpy.hpp).

У меня есть некоторый код, скажем, пакет A, (который по некоторым причинам не работает с Повышением 1.64), который использует Повышение 1.54 и некоторое другое программное обеспечение, скажем, пакет B, который я создаю из источника, который требует Повышения с Numpy (и их код принимают boost/python/numpy.hpp).

Я хотел бы сделать это двумя совместимыми, таким образом, я могу только думать о двух решениях:

  1. Измените каждый код в пакете B и измените определение #include <boost/python/numpy.hpp> стать <#include <boost/numpy.hpp> (хотя я не уверен, зафиксирует ли это 100% проблема),
  2. Переместите все файлы Numpy от моей системы от того, где они к boost/python таким образом, они совместимы с пакетом B (так как для пакета A не нужен Numpy).

Я не уверен, будут ли эти два решения соответствующими или если существует лучший способ сделать это? Я в настоящее время нахожусь на чистой установке, и я не хочу повреждать что-либо.

К сожалению, я также пытался создать пакет B с Повышением 1.64 и упаковать с Повышением 1.54, но эти два говорят друг с другом, и я узнал, что наличие двух с различными версиями Повышения вызывает отказ сегментации, таким образом, я определенно должен избежать этого решения.

1
задан 22 July 2018 в 14:51

1 ответ

Поскольку Вы не хотите обновлять до 18.04 LTS, поэтому давайте останемся на 14.04 LTS.
Но создайте Ubuntu 18.04 LTS schroot в нем с новым Повышением здесь:

sudo apt-get install schroot debootstrap -y

cat <<EOF | sudo tee /etc/schroot/chroot.d/bionic.conf
[bionic]
description=Ubuntu 18.04
directory=/srv/chroot/bionic
root-users=$USER
type=directory
users=$USER
EOF

sudo mkdir -p /srv/chroot/bionic
sudo debootstrap bionic /srv/chroot/bionic

cat <<EOF | sudo tee /srv/chroot/bionic/etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
EOF

schroot -c bionic -u root apt-get update
schroot -c bionic -u root apt-get install software-properties-common sudo
schroot -c bionic -u root apt-get install libboost1.65-dev

Не забывайте изменять корень на этот chroot, когда Вы захотите скомпилировать материал Повышения-NumPy:

schroot -c bionic

После этой команды командная строка изменится от user@host:~$ кому: (bionic)user@host:~$ и можно выполнить компиляцию в этой оболочке.

Я ранее протестировал этот метод с другими приложениями.
В настоящее время у меня есть 12.04 LTS (теперь EOL) schroot в моих 16.04 LTS для некоторых задач разработки.

1
ответ дан 7 December 2019 в 15:16

Другие вопросы по тегам:

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