자신에게 친절할 것 :)

Trouble shooting

[django] macOS에서 pycharm, mysql 연동(mysqlclient) 에러

Tashapark 2024. 9. 26. 01:50
728x90
반응형

... 매번 글을 트러블 슈팅만 쓰게 되는 것 같다..

 

사용자 바꾸고.. 실로 오랜만인데.....^^ 계속 안 썼으면 좋았을 건데 말이다. 

ㅎㅎㅎㅎ


이번주부터 장고 수업에 들어갔고, 

2-3일 전에  파이참에서 mysql 연동이 안되서 환경변수를 등록했었다. 

그 이후로 문제 없이 계속 썼는데..

 

수업 중에 갑자기 

이미 설치된 mysqlclient를 미친듯이.. 찾기 시작하며 연동이 안되기 시작했다. 

 

...

File "/Users/tasha/Mywork/my_venv/lib/python3.12/site-packages/django/db/backends/mysql/base.py", line 18, in <module> raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?

 

....당연히 에러에 따라서

pip install mysqlclient

를 했으나.. 이미 설치되었다고만 계속 해서 뜨고 처리가 안 됐다.

이전부터 안 된거면 모르겠는데.. 갑자기 오늘부터 그러기 시작했고.. 

이 때는 몰랐다.. 강의도 못 듣고..  저것만 붙들고 있을 것이란 걸...

 

환경변수..가 에러가 떴나.. 싶어서

지피티랑.. 배틀을 뜨기 시작했다..

......ㅎ.. 하루종일 했다...

 

경험상 100% 환경변수 문제인데.. 

희한한 것이 파이참 연동만 안되고, 쟝고 url이랑 python manage.py runserver는 다 작동이 되었다. 

오로지 "run"을 눌렀을 때만 작동이 안되었다. 

 

연결된 url로 처리는 전부 할 수 있었고

터미널로 만들어진 테이블들도 조회가 가능했다. 

 

이 때 "파이참 내 연결" 문제임을 깨달았어야 했는데..

이제까지 툴과의 연동문제를 터미널로 해결해 왔기 때문에 30분 전까지도 깨닫지 못했다. 

 

문제를 더 어렵게 했던 것은

1. 내 파이썬들이 서로 부딪힌다는 사실을 이미 알고 있었기 때문이다. 

- 워크 벤치로 파생된 finder문제로 사용자를 새로 만들어서 사용하고 있었는데, 이미 다 옮겨왔음에도 종종 이전 user로 경로가 설정되어있던 것을 확인했었다. 

- 다만, 가상환경이 잘 굴러갔고, 큰 문제가 없었기 때문에 그냥 썼었다.

 

++ 강의 중간에 강사님과 허들을 했는데.. 그 때까지 코드에는 문제가 없었고, 

settings.py나 manage.py 등 코드는 잘 써진 상태여서 의문만 남은 대화였다. 

에러를 보고 반복적으로 파이참에서 mysql을 못 찾는 것 같다고는 하셨으나... 답은 찾지 못하고, site-packages에서 해당 패키지 지우고 

재설치 해보라고만 하고 시간상 종료 했다. 

- 그 이후로 ..강의.....를 들을 수가 없었기에.. 돌아가지 않으니깐 ^^ (왜.. 터미널에서 강제 실행할 생각을 못 했을까... ㅎ^^) 

혹시나 .. 나중을 위한.. 터미널에서 그냥 가상환경이랑 경로 주면 실행됨. 

/Users/tasha/Mywork/my_venv/bin/python3.12/Users/tasha/Mywork/web06/exam/exam01.py

 

- 혼자 계속 지피티하고, 검색하면서 이리저리 해보다가.. 

- 저 user tasha가 종종 asus로 나온다는 것을......... 종료 직전에.. 안됐던 거 질문하는 시간에 내 차례 기다리면서 찾았다. 

- ... 강사님 시간됐다고.. exe ㅋ 찾아서 넣으라고 해서.......맥에 저딴게 어딨죠?????????????? ㅋ 아 버리셨네. 하고 

- 이전 사용자를 아예 없애기 위해서 다시.. 지피티와 대화 시작. 

 

1.1 which python 을 해보면 경로가 처음에는 아나콘다로 떴고, 환경변수 설정해서 이걸 잡으니깐,

# MySQL configuration
export PATH="/usr/local/mysql-8.0.36-macos14-arm64/bin:$PATH"
export DYLD_LIBRARY_PATH="/usr/local/mysql-8.0.36-macos14-arm64/lib:$DYLD_LIBRARY_PATH"

 

1.2 다음에는 asus 이전 user 것으로 반복해서 떴다. 

-> 사실상 user 명 빼고는 다 똑같아서.. 그런 건지.. 안 지워서 그런건지 .. 뭔지.. 

-> 이리저리 방법을 찾다가 결국 , asus 것과 tasha의 가상환경을 모두 지우고 재생성 했다. !

-> 지피티가 설명을 안 해줄 수도 있는데 반드시!! requirements.txt 로 이전에 가상환경에 설치했던 패키지들을 따로 빼놓길 추천한다. 

-> 다만, .... 그냥 워킹 디렉토리에 두고 지웠더니.. 다 삭제되서 못 찾았는데 다행히 지피티에게 물어볼 때 보냈던 내용이 있어서 똑같이 파일로 만들어달라고 해서 그걸 import 해서 사용 했다 ^^ -> 백업본 꼭 만드세요 !

 

1.3 에러를 잘보면, libmysqlclient.21.dylib 이걸 못 찾아서.. 심볼릭 링크를 몇 번을 만들었는지.. 

#파일 있는지 확인
ls /usr/local/mysql-8.0.36-macos14-arm64/lib/libmysqlclient*.dylib

#심볼릭 링크 추가
sudo ln -s /usr/local/mysql-8.0.36-macos14-arm64/lib/libmysqlclient.21.dylib /usr/local/lib/libmysqlclient.21.dylib

 

1.4 추가로 파일 실행권한도 확인했다 ^^

-> 실제로 실행 권한이 없었고 

# 파일 권한 확인
ls -l /Users/tasha/Mywork/web06/exam/exam01.py
# 예시 -rwxr-xr-x  1 tasha  staff  1234 Sep 26 12:34 exam01.py

# 권한 추가 x가 추가되어야 함
chmod +x /Users/tasha/Mywork/web06/exam/exam01.py

 

=> 이거면 될 줄 알았는데.. 웬 걸.. ㅎㅎㅎ^^ 

 

이제 경로랑, mysql 버전은 정확히 뜨는데 

여전히 문제가 해결이 안 됐다.


2. brew....재설치를 고민 

사실상, 패키지 언인스톨/인스톨, 파이참 인터프리터/가상환경 확인, 실행설정 확인, 환경변수 설정, 언어 및 툴 버전 확인, 코드 확인을....다 했는데도 

다시 말해서 ..... 에러를 입력했을 때 해결책 루틴으로 돌리는 방법을 모두 썼는데도 안됐다.. 

 

지피티는 mac이니깐 brew로 mysql 버전 확인하라는데...

지난......악몽이 떠오르고, 

이미 mysql은 공홈에서 받았고,

진짜 거짓말 안치고 수십번 삭제 재설치 하면서, 환경변수랑.. 다 맞게 해놨는데 굳이?

라고 생각했고, 위에서 이미 mysql 버전을 맞췄는데.. 싶었다. 

 

그래도 안 되면..  설치하자.. 했는데


3. 파이참 설정 확인 

 

- 지피티..에게 물어볼 때마다 다르고..아마도 오늘 하루종일 학습해서.. 드디어 나온 것이라고 생각함..

- 4개의 계정의 free 플랜 한도에 3번.. 도달해서 나온 것임..

- 처음에는 파이참에서 단순히 파일 경로와 인터프리터의 가상환경 경로만 확인하도록 나왔음. 

 

  • Run > Edit Configurations
  • 실행하려는 Django 프로젝트의 설정을 선택한 후, Environment Variables에서 + 버튼 누르고 변수 추가 
  • Name에 DYLD_LIBRARY_PATH를 입력
  • Value에 /usr/local/mysql-8.0.36-macos14-arm64/lib
  • apply 후 저장

 

!!!! 드디어 됐다!!!!!!

- 처음 사진에서도.. 어디에 넣으라는 거지? 아래에 없는데 하다가 찾았다. 

- 바로 위 사진은 Run > Edit Configurations 누르면 바로 보이는 창으로 환경변수에 경로가 추가된 것을 확인할 수 있다. 

 

 

 

된 것은 너무 좋은데.. 왜 터미널은 되는데 안 된거냐고.. 물어보니깐 

 

  • .zshrc는 터미널에서만 적용.
  • 파이참은 터미널의 환경 변수를 자동으로 가져오지 않기 때문에, 환경 변수를 Run/Debug Configurations에 직접 추가해야 함.

위처럼 답변했다.. 

결론은....터미널이 만능이 아니고, 프로그램에 따로 적용할 것

 

 


 

... 쓰고 보니 짧은데.. 

같은 행동을.. 몇 번을 반복했었는지..모르겠다. 

이래놓고 내일 안되면 울 것 같은데.. ㅠ

일단은........저장 했는데 사라지진 않겠지..

 

오늘 이해 없이 돌리지도 못하고 그냥 따라 치기만 한 코드들..에러가 많던데.. 

그건 이따가 복습할 때 봐야 할 것 같다... 

벌써 2시야 ㅠㅠ

 

728x90
반응형