2017-02-23 12 views
3

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.

Antwort

-1

Ich habe gerade gefunden, dass die Einstellung PYTHONPATH, sogar leer, in ~/.bashrc und dann Sourcing es das Problem löst.

So eine Linie setzen in ~/.bashrc:

export PYTHONPATH="" 

dann einen Befehl im Terminal ausführen:

source ~/.bashrc 

Jetzt Versuch funktioniert auch ohne PYTHONPATH zu ändern, i. e. mit leerem PYTHONPATH.

+1

" 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. –

1

Entweder:

PYTHONPATH="${PWD}" trial calculus 

Oder:

python -m twisted.trial calculus 

Oder eine setup.py schreiben und Ihre Quelle installieren (in einem virtualenv mit pip -e, wahrscheinlich) und dann einfach:

trial calculus