Ich versuche, Beispiel von "Test-driven Entwicklung mit Twisted" um http://twistedmatrix.com/documents/current/core/howto/trial.html zu reproduzieren.Twisted Versuch, PYTHONPATH und sys.path
I Dateien erstellt:
[[email protected] twistedm]$ trial calculus.test.test_base_1
calculus
test
test_base_1 ... [ERROR]
===============================================================================
[ERROR]
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/twisted/trial/runner.py", line 602, in loadByNames
things.append(self.findByName(name))
File "/usr/lib/python2.7/site-packages/twisted/trial/runner.py", line 406, in findByName
return reflect.namedAny(name)
File "/usr/lib/python2.7/site-packages/twisted/python/reflect.py", line 307, in namedAny
raise ObjectNotFound('%r does not name an object' % (name,))
twisted.python.reflect.ObjectNotFound: 'calculus.test.test_base_1' does not name an object
calculus.test.test_base_1
-------------------------------------------------------------------------------
Ran 1 tests in 0.199s
FAILED (errors=1)
Python nicht mein Modul finden:
[[email protected] calculus]$ PYTHONPATH="$PYTHONPATH:`pwd`/.."
I-Studie aufgerufen:
calculus/__init__.py
calculus/base_1.py
calculus/test/__init__.py
calculus/test/test_base_1.py
I PYTHONPATH modifiziert.
Aber wenn ich Python-Shell aufrufen und versuchen, meine Module zu importieren, importiert Python sie.
Ich habe dann eine Linie "sys.path.append ('/ home/xxx/twistedm/Kalkül/..')" in der Datei "/usr/lib/python2.7/site-packages/ twisted/python/reflect.py ". Und jetzt funktioniert alles wie es soll.
So habe ich herausgefunden, dass die Testversion nach Modulen in sys.path sucht, und die Einstellung von PYTHONPATH auf der Befehlszeile hat keine Auswirkungen auf sys.path.
Die Frage ist, wie Sie sys.path von der Befehlszeile aus ändern, wenn Sie Testversion aufrufen.
" leer "PYTHONPATH bedeutet" fügt das aktuelle Arbeitsverzeichnis zu sys.path hinzu ". Es ist das gleiche wie PYTHONPATH = ".". Und du solltest das NICHT in deinem Bashrc machen! Aus dem gleichen Grund enthält PATH nicht "." auf jedem modernen System - weil es Sie anfällig für einen Angriff macht, bei dem Code in Ihrem Arbeitsverzeichnis unerwartet ausgeführt wird. –