2014-07-26 16 views
7

Sto cercando di utilizzare nosetest con Python 2 e 3 non è affiancato in PyCharm (2.7.3).Utilizzo di nosetest in PyCharm con python 2 e 3 installati fianco a fianco

Tutto funziona bene sotto python 2.7, ma qualsiasi test in Python 3.4 non riesce con il seguente errore:

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__' 

Inoltre nella configurazione di esecuzione della corsa nosetest per il pitone 3 interprete si dice:

WARNING: No nosetest runner found in selected interpreter 

Cosa devo fare per risolvere questo problema? Come scelgo un runner appropriato per python 3 nosetests in pyCharm (2.7.3)? Grazie!

EDIT: A proposito, è PyCharm 2.7.3

+1

Vuol l'errore andare via se si cambia 'ritorno '' .join (traceback .format_exception (exctype, value, tb)) 'to' return '' .join (traceback.format_exception (exctype, value, tb, chain = False)) 'in' /home/robert/Programme/pycharm-2.7.3/ helpers/pycharm/nose_utils.py', line 58? – dano

+0

Sì, grazie, ha funzionato. Vuoi postare questo come una risposta reale invece di un commento, quindi posso contrassegnarlo come risposta? – SmCaterpillar

+0

Hmm il problema è ora, che non ho più un traceback, quindi il debugging diventa un incubo, c'è una soluzione? – SmCaterpillar

risposta

7

Ok, di pubblicare la mia soluzione qui per rendere più facile trovare per gli altri. Sostituendo linea 58 in PathToPyCharm/pycharm-2.7.3/helpers/pycharm/nose_utils.py con

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)) 

fatto nosetests lavoro con pitone 3.4 e 2.7. Tuttavia, usando python 3.4 l'intero stack-trace è perso se si verifica un errore. Di conseguenza, il debug diventa un incubo :(

Infine, ho risolto il problema semplicemente aggiornando la mia versione PyCharm a 3.4.1.

+0

Questa soluzione alternativa è ancora valida con pycharm 4.0.3 e python 3.4.2. – lekksi

+1

In pycharm 4.5 questo è ancora un problema, ma ora è la linea 70 che devi cambiare. –

+0

Ancora un problema qui su 4.5.4, funziona ancora sulla linea 70. – OldTinfoil

Problemi correlati