Installieren von libboost-python-dev für python3 ohne Installation von python2.7


9

Ich versuche, Boost-Bindungen für Python3 unter Ubuntu Xenial zu installieren, aber es zieht den gesamten Python2.7-Abhängigkeitsbaum ein. Ich möchte oder brauche Python2.7 nicht auf meinem System (Docker-Image). Gibt es eine Möglichkeit, nur Python3-Bindungen zu installieren?

Antworten:


8

Ich habe mich entschlossen, Boost selbst zu kompilieren und zu installieren (ich habe auch Python 3.6 selbst installiert / kompiliert). Ich habe jetzt in meiner Docker-Datei:

# We have to compile it ourselves against the custom Python and cannot use Debian package.
# Includes a symlink workaround for: https://svn.boost.org/trac10/ticket/11120
RUN cd /usr/src && \
 wget --no-verbose https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz && \
 tar xzf boost_1_65_1.tar.gz && \
 cd boost_1_65_1 && \
 ln -s /usr/local/include/python3.6m /usr/local/include/python3.6 && \
 ./bootstrap.sh --with-python=$(which python3) && \
 ./b2 install && \
 rm /usr/local/include/python3.6 && \
 ldconfig && \
 cd / && rm -rf /usr/src/*

2

Sie haben drei Möglichkeiten:

1. Erstellen Sie Boost.Python selbst

Dies ist die Option, die ich empfehle: Es ist sauber, es besteht kein Risiko, Ihr System durcheinander zu bringen, und Sie haben die volle Kontrolle darüber, was Sie erhalten. Darüber hinaus 1

Boost.Python ist eine separat kompilierte Bibliothek (im Gegensatz zur Nur-Header-Bibliothek)

Sie können das also einfach bauen. Laden Sie das Archiv herunter und befolgen Sie die Anweisungen im Handbuch Erste Schritte . (Dies ist, was OP getan hat .)


2. Verwenden Sie dpkgdiese Option, um unerwünschte Abhängigkeiten zu vermeiden

Wenn Sie Boost.Python nicht selbst erstellen möchten, können Sie apt(und seine Abhängigkeiten) mit umgehen dpkg.

Angenommen, Sie möchten ein Paket mit dem Namen installieren, foodas von barund abhängt baz, das Sie jedoch nicht benötigen baz.

apt download foo bar
sudo dpkg --ignore-depends=baz --install foo.deb bar.deb

Beachten Sie, dass sich aptimmer noch über ungelöste Abhängigkeiten beschweren wird (aber hey, das ist seine Aufgabe), sodass das Problem nicht vollständig gelöst ist: Sie haben es einfach unter den Teppich gekehrt.

Diese Option ist schneller als die vorherige, aber ich würde sie nicht empfehlen.


3. Verwenden Sie, um equivszu täuschenapt

Das ist neu für mich. Anscheinend können Sie Dummy-Pakete erstellen, um die Abhängigkeiten zu erfüllen . Auf diese Weise müssen Sie keine unerwünschten / unnötigen Pakete installieren und aptwerden sich nicht darüber beschweren.

Wie gesagt, ich habe ich nie equivszuvor, aber Sie können mehr darüber erfahren Sie hier .



-3

Ich kann zwei Lösungen anbieten, eine besteht darin, ein Python zu erstellen: 3.6-Image von Grund auf neu. Hier wird python3.x de facto zur Wahl.

Eine weitere Option, die für mich (unter Mac OSX) funktioniert hat, war:

brew install boost-python --with-python3 --without-python


3
Homebrew auf Ubuntu?
Leopd
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.