Q&A

책을 따라하다가 막히는 부분이 있나요?
질문을 남겨주세요.

psycopg2 에러와 관련하여

2 years, 9 months ago

bobiz0615 bobiz0615

p574 psycopg2 인스톨 후

docker-compose build 후 docker-compose up 에서 에러가 발생하여

Q&A를 확인 해보니

psycopg2를 지우고 psycopg2-binary 설치 조언을 얻어

AWS 배포와 https 인증까지 완료하였습니다.

그런데 제가 구축하고 있는 웹사이트가

사용자의 Excel file Data를 DB에 저장하고 분석후

다시 Excel file로 전달하는 것입니다.

그래서 local에서도 postgresql로 DB를 만들고 분석 전달하는 앱을 만들었는데

local에서 DB를 사용할려니 다시 psycopg2를 설치하라고 합니다.

psycopg2를 설치하고 127.0.0.1:8000 에서 모두 정상적으로 돌아가는 것을 확인하고

AWS에 pull 했는데 오류가 발행

다시 처음부터 Docker-compose build, up를 하니 psycopg2 에서 오류가 발생 합니다.

psycopg2를 설치하면 docker-compose up에서 오류가 발생하고

psycopg2를 지우면 local에서 오류가 발행하니 이러지도 못하고 저러지도 못하는 상태입니다.

근 한달째 기존 mysql에서 만들었던 코드를 모두 수정하고 postgresql로 모두 변환하였는데

이런 문제가 발생하여 난감합니다.

대책이 없을까요?

==========================================================

아래는 psycopg2를 지우고 runserver를 했을 때 오류 입니다.

(venv) λ python manage.py runserver

Watching for file changes with StatReloader

Exception in thread django-main-thread:

Traceback (most recent call last):

  File "C:\github\transform\venv\lib\site-packages\django\db\backends\postgresql\base.py", line 25, in <module>

    import psycopg2 as Database

ModuleNotFoundError: No module named 'psycopg2'


During handling of the above exception, another exception occurred:


Traceback (most recent call last):

  File "C:\Users\ME\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 932, in _bootstrap_inner

    self.run()

  File "C:\Users\ME\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 870, in run

    self._target(*self._args, **self._kwargs)

  File "C:\github\transform\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper

    fn(*args, **kwargs)

  File "C:\github\transform\venv\lib\site-packages\django\core\management\commands\runserver.py", line 110, in inner_run

    autoreload.raise_last_exception()

  File "C:\github\transform\venv\lib\site-packages\django\utils\autoreload.py", line 87, in raise_last_exception

    raise _exception[1]

  File "C:\github\transform\venv\lib\site-packages\django\core\management\__init__.py", line 375, in execute

    autoreload.check_errors(django.setup)()

  File "C:\github\transform\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper

    fn(*args, **kwargs)

  File "C:\github\transform\venv\lib\site-packages\django\__init__.py", line 24, in setup

    apps.populate(settings.INSTALLED_APPS)

  File "C:\github\transform\venv\lib\site-packages\django\apps\registry.py", line 114, in populate

    app_config.import_models()

  File "C:\github\transform\venv\lib\site-packages\django\apps\config.py", line 301, in import_models

    self.models_module = import_module(models_module_name)

  File "C:\Users\ME\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module

    return _bootstrap._gcd_import(name[level:], package, level)

  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import

  File "<frozen importlib._bootstrap>", line 991, in _find_and_load

  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked

  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked

  File "<frozen importlib._bootstrap_external>", line 783, in exec_module

  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

  File "C:\github\transform\venv\lib\site-packages\django\contrib\auth\models.py", line 3, in <module>

    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager

  File "C:\github\transform\venv\lib\site-packages\django\contrib\auth\base_user.py", line 48, in <module>

    class AbstractBaseUser(models.Model):

  File "C:\github\transform\venv\lib\site-packages\django\db\models\base.py", line 122, in __new__

    new_class.add_to_class('_meta', Options(meta, app_label))

  File "C:\github\transform\venv\lib\site-packages\django\db\models\base.py", line 326, in add_to_class

    value.contribute_to_class(cls, name)

  File "C:\github\transform\venv\lib\site-packages\django\db\models\options.py", line 207, in contribute_to_class

    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())

  File "C:\github\transform\venv\lib\site-packages\django\utils\connection.py", line 15, in __getattr__

    return getattr(self._connections[self._alias], item)

  File "C:\github\transform\venv\lib\site-packages\django\utils\connection.py", line 62, in __getitem__

    conn = self.create_connection(alias)

  File "C:\github\transform\venv\lib\site-packages\django\db\utils.py", line 204, in create_connection

    backend = load_backend(db['ENGINE'])

  File "C:\github\transform\venv\lib\site-packages\django\db\utils.py", line 111, in load_backend

    return import_module('%s.base' % backend_name)

  File "C:\Users\ME\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module

    return _bootstrap._gcd_import(name[level:], package, level)

  File "C:\github\transform\venv\lib\site-packages\django\db\backends\postgresql\base.py", line 29, in <module>

    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)

django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'

====================================================================

아래는 psycopg2를 설치 후 docker-compose build 후 up 했을때 오류 메세지 입니다.

Error: pg_config executable not found.

pg_config is required to build psycopg2 from source.  Please add the directory containing pg_config to the $PATH or specify the full executable path with the option:

python setup.py build_ext --pg-config /path/to/pg_config build or with the pg_config option in 'setup.cfg'.


=======================================================================


몇달째 제가 개발한 사이트가 AWS에 올려지기만을 기대하며


밤낮없이 코딩 했는데 어찌해야할지 모르겠습니다.


Postgresql 이 문제라면


mysql로 docker파일을 만들고 AWS에 올리는 소스나 팁을 알려 주시면 감사하겠습니다.



taegon
taegon   2 years, 9 months ago

안녕하세요.

설정 관련해서 어려움을 오래동안 겪고 있으시다니 안타깝습니다.

1) AWS환경에서 psycopg2-binary를 설치해서 정상작동한 것으로 이해했습니다.

2) 로컬에서는 psycopg2를 설치하셨다고 하셨는데, psycopg2-binary를 설치하였음에도 추가적으로 psycopg2를 설치해야한다는 메시지를 보셨다는 이야기이실까요?

3) 만약 이러한 문제라면, 각각 작동하는 파일을 이용하실 수 있지 않으실까요.(서버는 psycopg2-binary, 로컬은 psycopg2) 

로컬에서는 도커를 쓰지 않고, 서버에서만 도커를 쓰시는 환경이실까요?

만약 그렇다면, 로컬에서도 도커로 작업하시면, 동일하게 개발환경(로컬)과 운영환경(서버)를 운영하실 수 있습니다.

계속 문제가 되신다면, 소스 코드를 공유해주시면, 조금더 자세히 도와드릴 수 있을 것 같습니다.

고맙습니다.


Updated: Feb. 25, 2022, 11:11 a.m.

bobiz0615
bobiz0615   2 years, 9 months ago

처음 AWS 세팅은 책에서 알려준 blog를 세팅하는 것 까지는 성공하였습니다.

책내용 + 개발중인 app(DB분석, 폼변경)을 추가하여 git pull 했는데 원활히 되지 않아

다시 처음부터 docker-compose build를 했더니 처음에 발생했던

psycopg2에러가 발생한 것입니다.

로컬에서는 데이터베이스에 정보를 주고 받으려면 psycopg2-binary에서 오류가 발생하여

어쩔수 없이 psycopg2를 사용하는 입장입니다.

=====================================================

AWS환경에서 psycopg2-binary 정상작동 여부는 확인이 안되었습니다.

아직 이 문제로 AWS에 세팅을 완료하지 못했습니다.

여러가지 방법으로 AWS에 설치를 도전 하고 있지만 아직 해결 되지 않았습니다.

현재는 psycopg2 가 아닌 mysql을 사용하여 AWS에 세팅하는 방법을 찾아 보고 있는데

어떻게 해야할지 막막합니다.

몇가지 방법 후 도저히 풀리징 않는다면 메일로 소스등을 같이 공유 드리겠습니다.

답변 감사합니다.

Updated: Feb. 27, 2022, 8:13 p.m.

Leave a Comment:
목록보기
Search
  • 자유게시판
  • Q&A