Это сложная проблема, поскольку она касается самого пользовательского интерфейса Pythonwin.exe, а не моего кода.
Когда я запускаю файл со следующим кодом, я ожидаю, что в случае ошибки он покажет строку, в которой произошел сбой, в выводе traceback
Я буквально просто создал неиспользованную 32-битную среду Python 3.5, установил pywin32 и открыл мой testfile.py, чтобы запустить его, и вот результаты.
Скриншот
Если вы видите строку с надписью
File "C:\testfile.py", line 2, in <module>
foo = 2 #this line works fine, but is identified as the traceback line
Я бы ожидал, что это будет указывать на строку 5, а не на строку 2.
Внутри более крупного скрипта это гораздо более проблематично, так как мне нужно угадать, какая строка вызвала ошибку, основываясь на контексте.
Чтобы воспроизвести мою ситуацию в среде на основе анаконды:
1. откройте командную строку Anaconda
2. запустите следующие строки для генерации нашей среды
set CONDA_FORCE_32BIT=1
conda create -n test python=3.5
activate test
conda install -y pywin32
- Сохраните файл «testfile.py» с текстом:
#comment
foo = 2 #this line works fine, but is identified as the traceback line
a=2
a=3
a=b #this line causes the error, but isn't identified
- Откройте PythonWin.exe, откройте файл «testfile.py» и нажмите F5 или нажмите «Выполнить»
И это не просто проблема в установленных средах Anaconda.
Если у кого-то есть понимание того, как заставить его сообщать о неверной строке кода или почему он работает таким образом, пожалуйста, дайте мне знать. Спасибо!