簡體   English   中英

為什么我的 python 程序在使用調試器運行時不會拋出錯誤?

[英]Why does my python program throw an error when running it with the debugger doesn't?

首先,我使用播放按鈕在 Pycharm 中運行以下代碼片段:

import os
import pickle
import matplotlib.pyplot as plt
import numpy as np

directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), './linear_models')
file_path = os.path.join(directory, '/factor_model/predict_car_prices.p')
with open(file_path, 'rb') as f:
    lm = pickle.load(f)
print("Cat")

它具有以下回溯:

Traceback (most recent call last):
  File "/Users/ben/Documents/programs/testload.py", line 9, in <module>
    lm = pickle.load(f)
  File "/usr/local/lib/python3.7/site-packages/statsmodels/base/data.py", line 105, in __setstate__
    return_type='dataframe')
  File "/usr/local/lib/python3.7/site-packages/patsy/highlevel.py", line 308, in dmatrices
    eval_env = EvalEnvironment.capture(eval_env, reference=1)
  File "/usr/local/lib/python3.7/site-packages/patsy/eval.py", line 226, in capture
    return cls([frame.f_locals, frame.f_globals],
AttributeError: 'NoneType' object has no attribute 'f_locals'

如果我改為運行調試器,則程序完成而不會報告錯誤。

我不確定這是否是根本原因,但我在您的代碼中看到了一個明確的錯誤:

file_path = os.path.join(directory, '/factor_model/predict_car_prices.p')

根據文檔,“如果組件是絕對路徑,則所有先前的組件都將被丟棄,並從絕對路徑組件繼續連接。” 所以file_path在你的情況下實際上是'/factor_model/predict_car_prices.p' ,我認為這是不正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM