| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- Netcode
- 넷코드
- 인디게임개발
- Catverse
- Wings2022
- 페스트 #알베르카뮈
- 게임개발
- 메이플스토리월드
- custommessaging
- 브레이킹 루틴
- Unity
- MapleStoryWorlds
- #스타를#하다보니#최적화맛들림#42미네랄#앞마당파일런
- 공정한경쟁
- 2023 경기게임잼
- 바닥부터배우는강화학습
- 보통일베들의시대
- 쫄?
- ECS
- 프로이트 #쾌락원칙을넘어서
- 강화학습
- Wings2022굿즈
- 모토가있는하루
- 유니티
- 2023 버닝비버
- necode
- 객체지향의사실과오해 #객체지향
- InputSystem
- 역행자
- 2023 비버잼
- Today
- Total
이문회우
Powershell로 venv는 안 쓰는게 좋다 본문
떼깔을 위해 windows terminal을 사용한다면, 기본적으로 Powershell을 사용할 것이다.
그리고 Python의 가상 환경인 venv를 가르쳐주는 튜토리얼에서는 명령 프롬프트 기본으로 사용한다. 그런데 문제는 Powershell에서 venv 작동이 이상하게 되는 것이다.
우선, 기본적으로 가상 환경을 활성화하는 명령어가 다르다.

물론, 활성화만 잘 되면 별 문제가 없겠지만...
두 번째 문제는
powershell에서의 pip가 가상 환경이 아닌 global 환경으로 작동한다는 것이다.
가상 환경이 제대로 설정되었는지 확인하는 좋은 방법은 현재 환경에 어떤 패키지가 설정되었는지 확인하는 것이다.
그리고 그것은 pip list 명령어로 확인할 수 있다.
별다른 설정을 하지 않았다면, 처음 가상 환경을 설정했을 때 패키지 리스트는 다음과 같다.

깔-끔. 애초에 저런 깔끔한 환경에서 시작하기 위해 가상 환경을 쓰는 것이기도 하니까.
하지만 Powershell에서 패키지 리스트를 확인하면 다음과 같다.

동일한 가상 환경에서 동일한 명령어를 입력했음에도 불구하고
마치 내 모든 것을 보여주겠다는듯이 전역 환경에서 설치된 모든 패키지를 보여준다.
그저 설치된 패키지만 전역 환경의 것을 가져오는 것이면 사실 큰 문제는 아니다.
하지만 저 두 캡쳐는 Powershell 가상 환경에서 Django를 설치한 후 찍은 것이란 사실.
Powershell에서 진행한 pip install이 정상적으로 가상 환경 내에서 진행됐다면 명령 프롬프트에서 찍은 캡처에 적어도 Django 패키지는 표시가 됐어야 했다.
하지만 그러지 않았다는 것은?
→ Powershell 가상 환경 == 앞에 가상 환경 표시만 띄울 뿐 사실 전역 환경임

이와 관련해서 검색해봐도 별다른 정보가 없다. Stackoverflow에서도 참고 사이트가 끝이고 명확한 답도 없음.
하... 사실 저 캡처에서도 표시되면 안 될 패키지들이 엄청 많다.
당장 어제까지 강화 학습 관련한 패키지들을 가상 환경에 설치했었는데... 그게 다 전역 환경에 설치됐던거임!
아주 그냥 해골물을 벌컥벌컥
어떤 패키지들을 삭제해야하는지 감도 안 온다...
2022.04.15.
답을 찾았다.
아니 정확한 답은 아니고, Powershell 7로 업그레이드를 하면 Powershell로도 정상 작동한다.
하 스밤
이걸 몇 주만에 안 것인가...
2022.07.06.
사실 지금도 어째서 저런 상황이 벌어졌는지 모름 ㅎ
'개발' 카테고리의 다른 글
| [C#] Delegate + 함수 포인터, Event, 익명 함수+람다식, Invoke + 멀티쓰레딩 (2022.06.14.) (0) | 2022.06.14 |
|---|