... 매번 글을 트러블 슈팅만 쓰게 되는 것 같다..
사용자 바꾸고.. 실로 오랜만인데.....^^ 계속 안 썼으면 좋았을 건데 말이다.
ㅎㅎㅎㅎ
이번주부터 장고 수업에 들어갔고,
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시야 ㅠㅠ