Zwingen `pip` - so kompilieren Sie eine zuvor installierte Paket (numpy) nach dem Umschalten auf eine andere Python-binary
Diese Frage ist wie vieles eine Frage zu meinem speziellen problem (was ich irgendwie gefunden ein work-around, so dass es nicht ein brennendes Problem), als es sich um den Allgemeinen Prozess, den ich verwende.
Setup (der Teil funktioniert):
Habe ich Python 2.7.9 installiert lokal auf meinem Ubuntu 14.04 und ich habe ein virtualenv, in denen ich bin, läuft es. Alles ist sehr getrennt von der "system" - Python, die ich nicht berühren.
Das Teil habe ich:
Alles fing gut genug, mit meinem Python installiert und alle Bibliotheken ausgeführt. Ich habe zum Beispiel auch pip
installiert numpy 1.10.1, es wurde für eine Weile, dann lief es einwandfrei.
Das problem:
Das problem ist, dass aus Gründen, die außerhalb meiner Kontrolle musste ich neu erstellen die python mit ucs4
aktiviert, das heißt, dass ich es installiert mit
./configure --enable-unicode=ucs4
Danach habe ich auch deinstalliert, alle Bibliotheken neu installiert und diese mit pip. Es scheint jedoch, dass die numpy Bibliothek wurde nicht ordnungsgemäß deinstalliert, weil es sofort installiert diese Zeit, und als ich versuchte zu importieren numpy
in meine neue Python, bekam ich eine Fehlermeldung, dass die numpy wurden mit ucs2
-fähigen Python.
Diese Hypothese ist sehr solide, da ich versuchte dann pip install numpy==1.9.3
. Die installation nochmals dauerte eine lange Zeit, und es produziert ein numpy-version , dass die arbeiten an der neuen ucs4
aktiviert Python.
Nun meine Frage:
Wie bekomme ich die numpy deinstallation löschen Sie alle Spuren der alten numpy?
Bearbeiten:
Ich habe auch versucht manuell zu entfernen, numpy, indem Sie Sie löschen aus meinem virtualenv site-packages
- Verzeichnis. Nach dem löschen, import numpy
zurückgegeben ImportError
als erwartet. Ich habe dann neu installiert es (pip install numpy
) und es kam zurück mit der gleichen ucs2
-bezogene Fehler.
Edit 2:
Den vollen sys.path
gesehen durch meine virtualenv Python ist
['',
'/home/jkralj/.virtualenvs/work/lib/python27.zip',
'/home/jkralj/.virtualenvs/work/lib/python2.7',
'/home/jkralj/.virtualenvs/work/lib/python2.7/plat-linux2',
'/home/jkralj/.virtualenvs/work/lib/python2.7/lib-tk',
'/home/jkralj/.virtualenvs/work/lib/python2.7/lib-old',
'/home/jkralj/.virtualenvs/work/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7.9/lib/python2.7',
'/usr/local/lib/python2.7.9/lib/python2.7/plat-linux2',
'/usr/local/lib/python2.7.9/lib/python2.7/lib-tk',
'/home/jkralj/.virtualenvs/work/lib/python2.7/site-packages']
Außerdem ist es vielleicht wichtig zu erwähnen, dass die /usr/local/lib/python2.7.9/
installation von python nicht habe numpy installiert.
Nein, überprüfen Sie die edit-ich schrieb. Es funktionierte nicht, es hast, deinstallieren, numpy, aber die Neuinstallation brachte die gleiche Fehlermeldung wieder. Auch
which python
druckt die virtualenv pythonIhre Hypothese nicht erklären, die Tatsache, dass die Installation von numpy 1.9.3 funktioniert Prima.
Ich bearbeitet meine Frage einige mehr.
Nein, ich denke, Sie sollten dieses beantworten Sie sich (Sie haben Zugang zu mehr details sowieso). Ein anderer Vorschlag: Sie sollten auf jeden Fall deaktivieren Sie die pip-cache zu vermeiden, laufen in ähnliche Probleme mit anderen Modulen, die kompilierten Erweiterungen. In der Regel das Leben im
~/.cache/pip/
. Es könnte auch ein temporäres build-Verzeichnis in /tmp/
(siehe hier).InformationsquelleAutor 5xum | 2015-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
--no-binary
und--ignore-installed
Neuerstellung eines Pakets wie folgt--user
ist hier überflüssig, da OP verwendet virtualenv.Bezüglich
--force-reinstall
,pip help install
sagt: "Wenn Aktualisierung installieren Sie alle Pakete, selbst wenn Sie bereits up-to-date."InformationsquelleAutor
Ist das problem gelöst, indem pip deinstallieren numpy (oder jede andere unangenehme Paket), dann läuft
um zu verhindern, dass pip aus einfach die zwischengespeicherte installation und wiederholen es.
--no-cache-dir
nicht zwingen, eine Neukompilierung, es machte einfach pip-laden Sie das Paket erneut.--no-binary :all:
gezwungen eine Neukompilierung (ausgeführt vonsetup.py
).in meinem Fall --no-cache-dir auch verursacht eine Neukompilierung (als Folge des Herunterladens das Paket wieder, denke ich)
Es ist möglich, dass dieses Verhalten variiert etwas von system zu system. Ich habe pip verschiedene Dinge tun in Ubuntu und Fedora, und auch die verschiedene Dinge tun, wenn laufen in einer virtualenv. Aber
--no-cache-dir
nicht schneiden Sie es für mich :-/InformationsquelleAutor