2014-07-26 17 views
7

Ich versuche zu verwenden nosetest mit Python 2 und 3 nebeneinander in PyCharm (2.7.3).Verwendung von nosetests in PyCharm mit Python 2 und 3 nebeneinander installiert

Alles funktioniert unter Python 2.7, in Ordnung, aber jeder Test in Python 3.4 schlägt mit dem folgenden Fehler:

Traceback (most recent call last): 
    File "/home/robert/Programme/pycharm-2.7.3/helpers/pycharm/noserunner.py", line 91, in <module> 
    process_args() 
    File "/home/robert/Programme/pycharm-2.7.3/helpers/pycharm/noserunner.py", line 88, in process_args 
    TestProgram(argv=argv, config=config) 
    File "/usr/local/lib/python3.4/dist-packages/nose/core.py", line 121, in __init__ 
    **extra_args) 
    File "/usr/lib/python3.4/unittest/main.py", line 93, in __init__ 
    self.runTests() 
    File "/usr/local/lib/python3.4/dist-packages/nose/core.py", line 207, in runTests 
    result = self.testRunner.run(self.test) 
    File "/usr/local/lib/python3.4/dist-packages/nose/core.py", line 62, in run 
    test(result) 
    File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 177, in __call__ 
    return self.run(*arg, **kw) 
    File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 224, in run 
    test(orig) 
    File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 177, in __call__ 
    return self.run(*arg, **kw) 
    File "/usr/local/lib/python3.4/dist-packages/nose/suite.py", line 224, in run 
    test(orig) 
    File "/usr/local/lib/python3.4/dist-packages/nose/case.py", line 46, in __call__ 
    return self.run(*arg, **kwarg) 
    File "/usr/local/lib/python3.4/dist-packages/nose/case.py", line 139, in run 
    result.addError(self, err) 
    File "/usr/local/lib/python3.4/dist-packages/nose/proxy.py", line 131, in addError 
    plugins.addError(self.test, err) 
    File "/usr/local/lib/python3.4/dist-packages/nose/plugins/manager.py", line 99, in __call__ 
    return self.call(*arg, **kw) 
    File "/usr/local/lib/python3.4/dist-packages/nose/plugins/manager.py", line 167, in simple 
    result = meth(*arg, **kw) 
    File "/home/robert/Programme/pycharm-2.7.3/helpers/pycharm/nose_utils.py", line 51, in addError 
    err = self.formatErr(err) 
    File "/home/robert/Programme/pycharm-2.7.3/helpers/pycharm/nose_utils.py", line 58, in formatErr 
    return ''.join(traceback.format_exception(exctype, value, tb)) 
    File "/usr/lib/python3.4/traceback.py", line 181, in format_exception 
    return list(_format_exception_iter(etype, value, tb, limit, chain)) 
    File "/usr/lib/python3.4/traceback.py", line 146, in _format_exception_iter 
    for value, tb in values: 
    File "/usr/lib/python3.4/traceback.py", line 125, in _iter_chain 
    context = exc.__context__ 
AttributeError: 'str' object has no attribute '__context__' 

Außerdem im Vorfeld Konfiguration des nosetest Laufes für die Interpreter Python 3 heißt es:

WARNING: No nosetest runner found in selected interpreter 

Was muss ich tun, um das Problem zu beheben? Wie wähle ich einen geeigneten Runner für Python 3-Bugtests in pyCharm (2.7.3)? Vielen Dank!

EDIT: BTW, es ist PyCharm 2.7.3

+1

Tritt der Fehler verschwinden, wenn Sie ändern 'return‚‘.join (Traceback .format_exception (exctype, value, tb)) 'um' return '' .join (traceback.format_exception (extype, value, tb, chain = False)) 'in' /home/robert/Programme/pycharm-2.7.3/ Helfer/pycharm/nose_utils.py', Zeile 58? – dano

+0

Ja, danke, das hat funktioniert. Willst du das als echte Antwort anstatt als Kommentar posten, so kann ich es als beantwortet markieren? – SmCaterpillar

+0

Hmm das Problem ist jetzt, Ich habe kein Traceback mehr, also wird das Debuggen zum Albtraum, gibt es einen Workaround? – SmCaterpillar

Antwort

7

Ok, meine Abhilfe hier, um es zu erleichtern, es für andere zu finden. Ersetzen Linie 58 in PathToPyCharm/pycharm-2.7.3/helpers/pycharm/nose_utils.py mit

if sys.version_info[0]==3: 
    return ''.join(traceback.format_exception(exctype, value, tb, chain=False)) 
else: 
    return ''.join(traceback.format_exception(exctype, value, tb)) 

gemacht nosetests Arbeit mit Python 3.4 und 2.7. Mit Python 3.4 geht jedoch die gesamte Stack-Trace verloren, wenn ein Fehler auftritt. Als Folge wird das Debuggen ein Alptraum :(

Schließlich habe ich das Problem einfach durch ein Upgrade meiner PyCharm Version 3.4.1 gelöst.

+0

Diese Problemumgehung ist weiterhin gültig mit pycharm 4.0.3 und python 3.4.2. – lekksi

+1

In pycharm 4.5 ist das immer noch ein Problem, aber jetzt müssen Sie Zeile 70 ändern. –

+0

Immer noch ein Problem hier auf 4.5.4, funktioniert immer noch in Zeile 70. – OldTinfoil