Я установил Повышение. 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
).
Я хотел бы сделать это двумя совместимыми, таким образом, я могу только думать о двух решениях:
#include <boost/python/numpy.hpp>
стать <#include <boost/numpy.hpp>
(хотя я не уверен, зафиксирует ли это 100% проблема),boost/python
таким образом, они совместимы с пакетом B (так как для пакета A не нужен Numpy).Я не уверен, будут ли эти два решения соответствующими или если существует лучший способ сделать это? Я в настоящее время нахожусь на чистой установке, и я не хочу повреждать что-либо.
К сожалению, я также пытался создать пакет B с Повышением 1.64 и упаковать с Повышением 1.54, но эти два говорят друг с другом, и я узнал, что наличие двух с различными версиями Повышения вызывает отказ сегментации, таким образом, я определенно должен избежать этого решения.
Поскольку Вы не хотите обновлять до 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 для некоторых задач разработки.