Почему моя программа на python выдает ошибку, если ее запуск с отладчиком не происходит? - PullRequest
1 голос
/ 01 октября 2019

Сначала я запускаю следующий фрагмент кода в 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'

Если вместо этого я запускаю отладчик,Программа завершается без сообщения об ошибке.

1 Ответ

0 голосов
/ 01 октября 2019

Я не уверен, является ли это основной причиной, но я вижу определенную ошибку в вашем коде:

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

Согласно документации , "если компонент являетсяабсолютный путь, все предыдущие компоненты отбрасываются, и соединение продолжается с компонента абсолютного пути. "Так что file_path в вашем случае на самом деле будет '/factor_model/predict_car_prices.p', что, я полагаю, неверно.

...