Ich fange an, Python zu lernen und es zu lieben. Ich arbeite hauptsächlich auf einem Mac sowie unter Linux. Ich finde, dass unter Linux (meistens Ubuntu 9.04), wenn ich ein Python-Modul mit apt-get installiere, es gut funktioniert. Ich kann es ohne Probleme importieren.
Auf dem Mac bin ich es gewohnt, mit Macports alle Unixy-Inhalte zu installieren. Ich stelle jedoch fest, dass die meisten Python-Module, die ich damit installiere, von Python nicht gesehen werden. Ich habe einige Zeit damit verbracht, mit den PATH-Einstellungen herumzuspielen und python_select zu verwenden. Nichts hat wirklich funktioniert und an diesem Punkt verstehe ich nicht wirklich, stattdessen stöbere ich nur herum.
Ich habe den Eindruck, dass Macports für die Verwaltung von Python-Modulen nicht allgemein beliebt ist. Ich würde gerne mit einem "akzeptierten" Ansatz (wenn das das richtige Wort ist) neu anfangen.
Ich habe mich gefragt, mit welcher Methode Mac-Python-Entwickler ihre Module verwalten.
Bonusfragen:
Verwenden Sie Apples Python oder eine andere Version? Kompilieren Sie alles aus dem Quellcode oder gibt es einen Paketmanager, der gut funktioniert (Fink?).
Antworten:
Die beliebteste Methode zum Verwalten von Python-Paketen (wenn Sie Ihren Systempaket-Manager nicht verwenden) ist die Verwendung von setuptools und easy_install. Es ist wahrscheinlich bereits auf Ihrem System installiert. Verwenden Sie es so:
easy_install verwendet den Python- Paketindex , eine erstaunliche Ressource für Python-Entwickler. Schauen Sie sich um, welche Pakete verfügbar sind.
Eine bessere Option ist pip , das an Zugkraft gewinnt, da es versucht, viele der mit easy_install verbundenen Probleme zu beheben. Pip verwendet dasselbe Paket-Repository wie easy_install, es funktioniert einfach besser. Wirklich die einzige Zeit, die zur Verwendung von easy_install benötigt wird, ist für diesen Befehl:
Verwenden Sie danach:
Irgendwann werden Sie wahrscheinlich etwas über virtualenv lernen wollen . Wenn Sie viel Python für Projekte mit widersprüchlichen Paketanforderungen entwickeln, ist virtualenv ein Glücksfall. Auf diese Weise können Sie völlig unterschiedliche Versionen verschiedener Pakete verwenden und je nach Bedarf problemlos zwischen diesen wechseln.
In Bezug auf die zu verwendende Python werden Sie am wenigsten Kopfschmerzen haben, wenn Sie sich an Apples Python halten. Wenn Sie jedoch eine neuere Version benötigen (Leopard ist 2.5.1, glaube ich), würde ich mich für die Macports- Python 2.6 entscheiden.
quelle
Ihre Frage ist bereits drei Jahre alt und es gibt einige Details, die in anderen Antworten nicht behandelt werden:
Die meisten Leute, die ich kenne, verwenden HomeBrew oder MacPorts . Ich bevorzuge MacPorts, da die Standardumgebung für Mac OS X und mein Entwicklungssetup sauber sind. Verschieben Sie einfach Ihren Ordner / opt und testen Sie Ihre Pakete mit einer normalen Python-Benutzerumgebung
MacPorts ist nur innerhalb von Mac portierbar, aber mit easy_install oder pip lernen Sie, wie Sie Ihre Umgebung auf jeder Plattform (Win / Mac / Linux / Bsd ...) einrichten. Darüber hinaus wird es immer aktueller und mit mehr Paketen sein
Ich persönlich überlasse MacPorts meine Python-Module, um alles auf dem neuesten Stand zu halten. Wie jeder andere High-Level-Paketmanager (dh apt-get) ist es viel besser für das schwere Heben von Modulen mit vielen binären Abhängigkeiten. Ich würde meine Qt-Bindungen (PySide) auf keinen Fall mit easy_install oder pip erstellen. Qt ist riesig und erfordert viel Kompilierung. Versuchen Sie, easy_install oder pip zu vermeiden, sobald Sie ein Python-Paket benötigen, das eine Bibliothek benötigt, die von Nicht-Python-Programmen verwendet wird
Irgendwann werden Sie feststellen, dass in MacPorts einige Pakete fehlen. Ich glaube nicht, dass MacPorts Ihnen jemals den gesamten CheeseShop geben wird . Zum Beispiel brauchte ich kürzlich das Elixir- Modul, aber MacPorts bietet nur py25-Elixir und py26-Elixir an, keine py27-Version. In solchen Fällen haben Sie:
(Stellen Sie sicher, dass Sie immer pip- (Version) eingeben.)
Dadurch wird eine zusätzliche Python-Bibliothek in Ihrem Home-Verzeichnis erstellt. Ja, Python funktioniert mit mehr als einem Bibliotheksverzeichnis: einem von MacPorts gesteuerten und einem lokalen Benutzer für alles, was in MacPorts fehlt.
Beachten Sie jetzt, dass ich pip gegenüber easy_install bevorzuge. Es gibt einen guten Grund, warum Sie setuptools und easy_install vermeiden sollten. Hier ist eine gute Erklärung und ich versuche, mich von ihnen fernzuhalten. Eine sehr nützliche Funktion von pip besteht darin, Ihnen eine Liste aller Module (zusammen mit ihren Versionen) zu geben, die Sie mit MacPorts, easy_install und pip selbst installiert haben:
Wenn Sie bereits mit easy_install begonnen haben, machen Sie sich keine Sorgen, pip kann alles erkennen, was bereits von easy_install erledigt wurde, und sogar die damit installierten Pakete aktualisieren.
Wenn Sie ein Entwickler sind, behalten Sie virtualenv im Auge, um verschiedene Setups und Kombinationen von Modulversionen zu steuern. Andere Antworten erwähnen es bereits. Was bisher nicht erwähnt wurde, ist das Tox- Modul, ein Tool zum Testen, ob Ihr Paket mit verschiedenen Python-Versionen korrekt installiert ist.
Obwohl ich normalerweise keine Versionskonflikte habe, möchte ich virtualenv haben, um eine saubere Umgebung einzurichten und einen klaren Überblick über meine Paketabhängigkeiten zu erhalten. Auf diese Weise vergesse ich nie irgendwelche Abhängigkeiten in meiner setup.py
Wenn Sie sich für MacPorts entscheiden, beachten Sie, dass mehrere Versionen desselben Pakets nicht mehr wie im alten Debian-Stil mit einem zusätzlichen python_select-Paket ausgewählt sind (es ist aus Kompatibilitätsgründen immer noch vorhanden). Jetzt haben Sie den Befehl select, mit dem Sie auswählen können, welche Python-Version verwendet werden soll (Sie können sogar die von Apple installierten auswählen):
Fügen Sie Tox hinzu und Ihre Programme sollten wirklich portabel sein
quelle
Weitere Informationen finden Sie in der Python OS X-Entwicklungsumgebung . Am besten verwenden Sie MacPorts . Laden Sie MacPorts herunter und installieren Sie es. Installieren Sie dann Python über MacPorts, indem Sie die folgenden Befehle in das Terminal eingeben:
ODER
Verwenden Sie den ersten Befehlssatz, um Python 2.6 zu installieren, und den zweiten Satz, um Python 3.0 zu installieren. Dann benutze:
ODER
Ersetzen Sie in den obigen Befehlen den Paketnamen durch den Namen des Pakets, zum Beispiel:
Diese Befehle installieren automatisch das Paket (und seine Abhängigkeiten) für die angegebene Python-Version.
Geben Sie Folgendes ein, um eine vollständige Liste der verfügbaren Pakete für Python anzuzeigen:
ODER
Welchen Befehl Sie verwenden, hängt davon ab, welche Python-Version Sie installiert haben.
quelle
sudo python_select python30
durch ersetztsudo port select --set python python30
.Ich verwende MacPorts, um Python und alle von MacPorts verfolgten Module von Drittanbietern zu installieren
/opt/local
, und installiere alle manuell installierten Module (die nicht im MacPorts-Repository enthalten sind)/usr/local
Dies hat nie zu Problemen geführt. Ich denke, Sie sind möglicherweise verwirrt über die Verwendung bestimmter MacPorts-Skripte und Umgebungsvariablen.MacPorts
python_select
wird verwendet, um die "aktuelle" Version von Python auszuwählen, hat jedoch nichts mit Modulen zu tun. Auf diese Weise können Sie beispielsweise Python 2.5 und Python 2.6 mit MacPorts installieren und zwischen den Installationen wechseln.Die
$PATH
Umgebungsvariablen sind nicht beeinflussen , was Python - Module geladen werden.$PYTHONPATH
ist das, wonach Sie suchen.$PYTHONPATH
sollte auf Verzeichnisse verweisen, die Python-Module enthalten, die Sie laden möchten. In meinem Fall$PYTHONPATH
enthält meine Variable/usr/local/lib/python26/site-packages
. Wenn Sie MacPorts 'Python verwenden, werden die anderen richtigen Verzeichnisse für Sie eingerichtet, sodass Sie nur zusätzliche Pfade hinzufügen müssen$PYTHONPATH
. Wird aber auch$PATH
nicht verwendet, wenn Python nach von Ihnen installierten Modulen sucht.$PATH
wird verwendet, um ausführbare Dateien zu finden. Wenn Sie also Python von MacPorts installieren, stellen Sie sicher, dass/opt/local/bin
es sich in Ihrem befindet$PATH
.quelle
Es ist nichts Falsches daran, eine MacPorts Python-Installation zu verwenden. Wenn Sie Python-Module von MacPorts installieren, diese dann aber nicht sehen, bedeutet dies wahrscheinlich, dass Sie den MacPorts-Python, auf dem Sie installiert haben, nicht aufrufen. In einer Terminal-Shell können Sie absolute Pfade verwenden, um die verschiedenen Pythons aufzurufen, die möglicherweise installiert sind. Beispielsweise:
Um die richtige Python standardmäßig zu erhalten, muss sichergestellt sein, dass Ihre Shell $ PATH richtig eingestellt ist, um sicherzustellen, dass zuerst die richtige ausführbare Datei gefunden wird. Eine andere Lösung besteht darin, Shell-Aliase für die verschiedenen Pythons zu definieren.
Eine Installation von python.org (MacPython) ist ebenfalls in Ordnung, wie andere vorgeschlagen haben.
easy_install
kann aber auch hier helfen, da jede Python-Instanz möglicherweise einen eigeneneasy_install
Befehl hat, stellen Sie sicher, dass Sie das Recht aufrufeneasy_install
.quelle
Wenn Sie Python von MacPorts verwenden, verfügt es über eine eigene easy_install-Datei unter: /opt/local/bin/easy_install-2.6 (für py26 also). Es ist nicht dasselbe wie einfach direkt easy_install aufzurufen, selbst wenn Sie python_select verwendet haben, um Ihren Standard-Python-Befehl zu ändern.
quelle
sudo port install py2.6-pip
pip bekommen.Haben Sie sich überhaupt mit easy_install befasst ? Es synchronisiert Ihre Macports oder ähnliches nicht, lädt jedoch automatisch das neueste Paket und alle erforderlichen Abhängigkeiten herunter, d. H.
für das Testpaket für die Naseneinheit oder
für den
trac
Bug Tracker.Es gibt auch ein bisschen mehr Informationen auf ihrer EasyInstall- Seite.
quelle
Für MacPython-Installationen habe ich in diesem Blog-Beitrag eine effektive Lösung zur Behebung des Problems mit setuptools (easy_install) gefunden:
http://droidism.com/getting-running-with-django-and-macpython-26-on-leopard
Ein praktischer Tipp ist herauszufinden, welche Python-Version im Terminal aktiv ist:
quelle
Wenn Sie Module mit MacPorts installieren, wird diese nicht in die Apple-Version von Python aufgenommen. Stattdessen werden diese Module auf der ausgewählten MacPorts-Version von Python installiert.
Sie können ändern, welche Python-Version standardmäßig verwendet wird, indem Sie einen Mac-Port namens python_select verwenden . Anleitung hier .
Außerdem gibt es easy_install . Welches Python verwendet, um Python-Module zu installieren.
quelle
python_select
ist jetzt veraltet, siehe neuere Antworten.Möglicherweise haben Sie bereits
pip3
vorinstalliert, probieren Sie es einfach aus!quelle
In Bezug auf die zu verwendende Python-Version liefert Mac OS normalerweise eine alte Python-Version aus. Es ist eine gute Idee, auf eine neuere Version zu aktualisieren. Sie können eine .dmg von http://www.python.org/download/ herunterladen . Denken Sie in diesem Fall daran, den Pfad zu aktualisieren. Die genauen Befehle finden Sie hier http://farmdev.com/ Thoughts/66/python-3-0-on-mac-os-x-alongside-2-6-2-5-etc-/
quelle
Ich benutze easy_install mit Apples Python und es funktioniert wie ein Zauber.
quelle
Installieren Sie direkt eines der Fink-Pakete (Django 1.6 ab 2013-Nov)
Oder erstellen Sie sich eine virtuelle Umgebung:
Oder verwenden Sie fink django und alle anderen installierten Pip-Pakete in einer virtuellen Umgebung
quelle