2013-07-23 6 views
7

Gibt es einen kanonischen Ort, an dem man selbstgeschriebene Pakete ablegen kann? Meine eigene Suche ergab nur einen Blogpost über where to put version-independent pure Python packages und einen SO question for the canonical location under Linux, während ich an Windows arbeite.Wo soll ich meine selbstgeschriebenen Python-Pakete ablegen?

Mein Anwendungsfall ist, dass ich in der Lage sein möchte, meine eigenen Pakete während einer IPython-Sitzung wie jedes Site-Paket zu importieren, egal in welchem ​​Arbeitsverzeichnis ich die Sitzung gestartet habe. In Matlab ist der entsprechende Ordner beispielsweise einfach C:/Users/ojdo/Documents/MATLAB.

import mypackage as mp 
mp.awesomefunction() 
... 
+0

Ich bevorzuge es, Dateien in 'C: \ PythonXX \ Lib \ site-packages' zu stecken. Dies hat den Vorteil, dass keine zusätzliche Konfiguration erforderlich ist - dieses Verzeichnis befindet sich standardmäßig in 'sys.path'. – bbayles

+4

Haben Sie [die Dokumentation] (http://docs.python.org/2/install/#how-installation-works) angeschaut? Sie können auch die Umgebungsvariable PYTHONPATH verwenden, wie in einem anderen Abschnitt der Dokumentation (http://docs.python.org/2/install/#modifying-python-ssearch-path) erläutert. –

Antwort

6

Dank der twoadditional Links, fand ich nicht nur die bestimmungsgemäße Antwort auf meine Frage, sondern auch eine Lösung, die ich wie noch mehr und das - ironischerweise - wurde auch in meinem ersten Suchergebnis erklärt, aber durch den ganzen versions- (in) abhängigen Site-Paket-Jargon verschleiert.

Antwort ursprüngliche Frage

Ich wollte eine kanonische, wenn es wissen (wie in „default“) Standort für meine selbstgeschriebene Pakete. Und das gibt es:

>>> import site 
>>> site.USER_SITE 
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python27\\site-packages' 

Die docs auf user scheme package installation Zustand, dass dieser Ordner - falls vorhanden - wird automatisch auf sys.path hinzugefügt werden.

Individuelles Verzeichnis für eigene Pakete

  1. Erstellen Sie ein Verzeichnis überall, zum Beispiel C:\Users\ojdo\Documents\Python\Libs.
  2. Fügen Sie die Datei sitecustomize.py dem Site-Packages-Ordner der Python-Installation hinzu, d. H. In C:\Python27\Lib\site-packages (für alle Benutzer) oder site.USER_SITE (für einen einzelnen Benutzer).
  3. Diese Datei dann mit dem folgenden Code gefüllt ist:

    import site 
    site.addsitedir(r'C:\Users\ojdo\Any\Folder\You\Like\Libs') 
    
  4. Voilà, das neue Verzeichnis nun automatisch hinzugefügt wird sys.path in jeder (I) Python-Sitzung.

So funktioniert es: Paket site, dass automatisch bei jedem Start von Python importiert wird, versucht das Paket auch sitecustomize für benutzerdefinierten Paketpfad Änderungen zu importieren. In diesem Fall besteht dieses Dummy-Paket aus einem Skript, das den persönlichen Paketordner zum Python-Pfad hinzufügt.

+0

wird es tun, sobald es möglich ist. Ich erhalte ein * "Du kannst deine eigene Antwort morgen annehmen" * gerade jetzt. – ojdo

+0

Hinweis - die Python-Dokumente haben einen Fehler - sie haben ein falsches Format. Es besagt, dass die Pakete in "modules: userbase/lib/pythonX.Y/site-packages" sein sollten, aber das Verzeichnis (für 3.5) von site.USER_SITE ist '~/Library/Python/3.5/lib/python/site-packages - Beachte, dass XY nicht da ist. Meine site.USER_BASE ist '~/Library/Python/3.5' –

7

Legen Sie die Quelle des Pakets, wo immer Sie möchten, aber zumindest Ihr Paket eine minimale setup.py Datei geben, unmittelbar außerhalb des Pakets:

import setuptools 

setuptools.setup(name='mypackage') 

Dann gefälschte installieren Ihr Paket in Ihrem Python installieren site-packages durch laufen:

python setup.py develop 

Dieses viel ist python setup.py install wie laufen, mit Ausnahme der egg nur Punkte zu Ihrem Quellbaum, so dass Sie nicht zu install nach e haben sehr Änderung des Quellcodes.

Schließlich sollten Sie in der Lage sein, Ihr Paket zu importieren:

python -c "import mypackage as mp; print mp.awesomefunction()" 
1

Ich hatte die gleiche Frage, und die Antwort ist sehr hilfreich. ein wenig hinzuzufügen, ich kam in diesem Beispiel, das mir nützlich ist:

http://python-packaging.readthedocs.io/en/latest/minimal.html

Es ist ein minimales Beispiel dafür, wie Sie Ihren eigenen Code zu verpacken, und es richtig lokal installieren (Ich stelle mir das ist, was Sie wollen eigentlich), oder verteilen Sie auf PyPI. Dinge auf Python-Art tun.

+0

Upvoted sowohl für den Inhalt und den 'Witz'. Dann ... 'pip suchen am lustigsten' – ojdo

Verwandte Themen