1

Python 3.5 отлаживать ошибку запускаVisual Studio 2015 Python 3.5 отлаживать ошибку запуска

Я попытался запустить небольшую программу на Python в режиме отладки с помощью Visual Студийского 2015 Но это не удается добраться до первого оператора, который является import заявления , Почему он получает ошибку __file__, как описано ниже?

Пример Quantlib под названием Swap.py запускается без ошибок в Visual Studio 2015 в режиме выпуска. Но в режиме отладки, он получает эту ошибку при запуске:

Additional information: 'module' object has no attribute '__file__' 

версия Quantlib является 1.6.2 и версия QuantLib SWIG является 1.6.1.

Это первая линия swap.py есть и он не получает, что далеко:

from QuantLib import * 

Я установил Python 3.5 компоненты отладки. Затем в Visual Studio 2015 для Python я создал среду Python для использования python_d.exe, pythonw_d.exe и python35_d.dll.

Окно вывода:

'python_d.exe' (Win32): Loaded 'C:\Program Files (x86)\Python 3.5\python_d.exe'. Symbols loaded. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Program Files (x86)\Python 3.5\python35_d.dll'. Symbols loaded. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\vcruntime140d.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ucrtbased.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ws2_32.dll'. Cannot find or open the PDB file. <frozen importlib._bootstrap>!_spec_from_module Line 483 Python 
<frozen importlib._bootstrap>!_setup Line 1107   Python 
<frozen importlib._bootstrap>!_install Line 1134  Python 
[External Code] 
python_d.exe!wmain(int argc, wchar_t * * argv) Line 14 C 
[External Code] 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\nsi.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\bcryptprimitives.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptsp.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'D:\ProgramFiles\vc2015\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\2.2\Microsoft.PythonTools.Debugger.Helper.x86.dll'. Symbols loaded. 
'python_d.exe' (Python): Loaded ''. Module was built without symbols. 
The thread 0x26d4 has exited with code 1577189376 (0x5e020000). 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rsaenh.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Win32): Loaded 'C:\Windows\SysWOW64\bcrypt.dll'. Cannot find or open the PDB file. 
'python_d.exe' (Python): Loaded '<frozen importlib._bootstrap>'. Module was built without symbols. 
AttributeError 
Additional information: 'module' object has no attribute '__file__' 

Стек:

<frozen importlib._bootstrap>!_spec_from_module Line 483 Python 
<frozen importlib._bootstrap>!_setup Line 1107    Python 
<frozen importlib._bootstrap>!_install Line 1134   Python 
[External Code] 
python_d.exe!wmain(int argc, wchar_t * * argv) Line 14  C 
[External Code] 

Я был в состоянии отладки в код Python (по крайней мере смотреть на визуальных Locals студии). Нам нужно иметь возможность отлаживать в Python и собственный код. Это то, что стек выглядит как после неудачи:

Mixed Use Call Stack

Это функция Python, которая выходит из строя (с кодом до точки отказа):

def _spec_from_module(module, loader=None, origin=None): 
    # This function is meant for use in _setup(). 
    try: 
     spec = module.__spec__ 
    except AttributeError: 
     pass 
    else: 
     if spec is not None: 
      return spec 
    name = module.__name__ 
    if loader is None: 
     try: 
      loader = module.__loader__ 
     except AttributeError: 
      # loader will stay None. 
      pass 
    try: 
     location = module.__file__ 

Но нет __file__ поле в модуле:

contents of module object

объект погрузчик имеет много полей бушель т вот некоторые из них:

loader has type class BuiltinImporter 
loader.__module__'_frozen_importlib'    str 
loader.__mro__  (<class 'BuiltinImporter'>, <class 'object'>) tuple 
+0

Вы можете подробно, в начале вопрос, что вопрос, который вы испытываете ... [также прочитать эту ссылку] (HTTP: //stackoverflow.com/help/how-to-ask) – Bonatti

ответ

0

я получил версию отладки работать следующим образом:

Переустановка Quantlib 1.6.2 и Quantlib SWIG 1.6.1

Построить Quantlib и Quantlib SWIG в Debug Режим.

Тогда у меня все еще была ошибка при запуске, но было более очевидно, что она смотрела на другую версию Quantlib.py.

Я удалил содержимое VirtualStore: \Users\<Username>\AppData\Local\VirtualStore\Program Files (x86)\Python 3.5\Lib\site-packages\QuantLib\