Ich richte Travis-CI für mein Projekt ein, und seltsamerweise kann ich mein Projekt nicht importieren:
%Vor%In der Produktion erzeuge ich einfach einen Symlink wie folgt:
%Vor%Aber ich weiß nicht - oder möchte wirklich wissen - Travis-CI's Ordnerstruktur.
Das scheint ein gelöstes Problem zu sein, aber ich bin neu bei Travis-CI. Was ist der beste Weg, um dies zu erreichen, so dass mein Code als ein importierbares Modul hinzugefügt wird?
Was ist der beste Weg, um dies zu erreichen, so dass mein Code als ein importierbares Modul hinzugefügt wird?
Die Antwort lautet eindeutig: distutils
(und definitiv nicht ln
).
In der Produktion erstelle ich einfach einen Symlink ...
B-b-aber warum? Die Komplexität, es richtig zu machen, ist so gering! Es passt sogar in ein paar Zeilen:
Aus Das Feinhandbuch - erstellen Sie einfach ein setup.py
wie folgt:
Jetzt können Sie fantastische Dinge wie python setup.py install
, python setup.py bdist_rpm
oder pip install .
tun - und nicht nur in der Travis-Umgebung, sondern für Ihr Projekt im Allgemeinen.
Um schnell zu sein, können Sie das Problem eleganter lösen, indem Sie der Stufe before_script
Folgendes hinzufügen:
Der bessere Weg (aber mit etwas mehr Aufwand) ist, was Brian Cain vorgeschlagen hat, nämlich eine setup.py
-Datei schreiben und pip install .
zur install
-Stufe hinzufügen.
Oder wenn Sie ein Makefile verwenden, können Sie einen Befehl haben, der es wie folgt ausführt.
%Vor% Das ist sicherlich nicht optimal, aber es hat funktioniert. In meiner Datei .travis.yml habe ich dem Attribut install
folgende Zeile hinzugefügt:
Dies findet im Grunde das Verzeichnis, in dem Python installiert ist und fügt dann my_module
als Symlink hinzu. Freut mich, eine bessere Antwort zu hören, denn diese fühlt sich sehr zerbrechlich an.
Update : Sehen Sie die Antwort von @Brian Cain für eine viel bessere Lösung.
In Ergänzung der @ Brian-Cain-Antwort können Sie auch setuptools
anstelle von distutils
verwenden. Zum Zeitpunkt des Schreibens wird distutils
auslaufen und setuptools
wird als Ersatz verwendet, obwohl sich setuptools
noch nicht in der Standardbibliothek befindet.
Für ein kurzes Tutorial zum Erstellen eines setup.py
mit setuptools
:
Ссылка
Für ein schnelles Beispiel: Ссылка
Es ist wahrscheinlicher, dass /home/travis/.local/lib/python2.7/site-packages/
zu PYTHONPATH
in before_script
mit export PYTHONPATH=$PYTHONPATH:/home/travis/.local/lib/python2.7/site-packages/
hinzugefügt werden muss.
Tags und Links python python-import travis-ci