Я отправил свое веб-приложение в Heroku, и оно было нормально построено / развернуто, но при обращении к нему я получаю эту ошибку:

AttributeError at /
module 'wakemeup.models' has no attribute 'environment'
Exception Location: /app/lib/UsefulFunctions/googleUtils.py in <module>, line 16
Python Executable:  /app/.heroku/python/bin/python
Python Version: 3.6.10
Python Path:    
['/app/.heroku/python/bin',
 '/app',
 '/app/.heroku/python/lib/python36.zip',
 '/app/.heroku/python/lib/python3.6',
 '/app/.heroku/python/lib/python3.6/lib-dynload',
 '/app/.heroku/python/lib/python3.6/site-packages']

Он отлично работает локально, поэтому моей первой мыслью был PYTHONPATH, но, похоже, он похож локально:

Python Path:    
['C:\\Users\\ravioli\\projects\\dcp',
 'C:\\Program Files (x86)\\Python38-32\\python38.zip',
 'C:\\Program Files (x86)\\Python38-32\\DLLs',
 'C:\\Program Files (x86)\\Python38-32\\lib',
 'C:\\Program Files (x86)\\Python38-32',
 'C:\\Program Files (x86)\\Python38-32\\lib\\site-packages']

Структура каталогов (упрощенная)

enter image description here

googleUtils.py (упрощенный)

import os
import sys
import io
import copy
from urllib.error import HTTPError

# Import - Google
from google.oauth2 import service_account
...

# Import - Application
from lib.UsefulFunctions.dataUtils import get_setting
import wakemeup.models.environment as env

class GoogleDriveManager():
 ...

Изначально у меня была строка import wakemeup.models.environment as env как from ... import, но это давало мне циклическую ошибку зависимости, поэтому я изменил ее, и она отлично работает локально. Не уверен, связано ли это с этим.

Как я могу это исправить, чтобы он работал на Heroku?

0
ravioli 16 Апр 2020 в 07:20

1 ответ

Лучший ответ

Я изменил оператор импорта, и теперь он работает:

from wakemeup import models
# import wakemeup.models.environment as env # original

Может быть, был еще один модуль с именем environment, который использует Heroku, не уверен.

0
ravioli 17 Апр 2020 в 17:19