Google Colab에서 !pip과 $pip의 차이점Google Colab에서 파이썬 패키지를 설치하는 데 사용할 수 있는 두 가지 주요 명령어는 !pip과 $pip입니다. 하지만 각 명령어는 작동 방식과 결과에 있어 몇 가지 중요한 차이점이 있습니다.1. 명령어 실행 환경:
|
뭔 소리일까.... 제대로 이해 못함.
windows jupyter에서는 현재 폴더를 표시하는 pwd 명령어가
- %를 사용했을 때 정상적 표현
- !를 사용하면 에러메세지와 함께 실행불가 (stackoverflow찾아봐도 조치 방법 안 나옴)
macbook으로 동일한 파일을 옮겨서 테스트, 두 명령어 모두 정상적으로 표기
- %pwd :: 주소표시 양쪽 끝에 ' ' string type으로 표시하는 것인지 차이 있음
- !pwd :: 주소만 표시
명령어가 운영체제(OS)에 따라서 동작여부가 달라지나 싶어서
windows에서 테스트
- mkdir 명령어로 폴더 하나 만들어 봄. >> 생성완료
- cd 명령어로 해당폴더로 이동 >> !pwd 명령어 찍어 봄 >> 폴더 안보임 >> !ls로 찍어봄 >> 안 보임
(** windows에서도 powershell 사용하면 ls명령어로 cmd에서의 dir명령어와 동일하게 나옴)
- %pwd , %ls 명령어로 똑같이 찍어 봄 >> shell output 잘 나옴
- 그런데, cd subfolder를 했는데 "Coolpropnotebooks/subfolder" 가 아닌 "Coolpropnotebooks"폴더가 표시됨
macbook에서
- mkdir , cd subfolder 명령어 정상적으로 동작함 >> success 표시 뜸
- windows에서 실행 안되는 것처럼 보이던 pwd로 동작함
- 동일하게 폴더 변경은 안됨
- 그래서, 명령어 실행 완료 후 이어서 실행하는 "&&" 문구로 cd subfolder와 pwd 실행하면 변경됨
; windows vs macos 운영체제의 차이가 아님
그래서 1개의 shell에서 1번째줄 !cd subfolder , 2번째줄 !pwd 해 봄
폴더 변경 안됨
처음에 gpt 설명을 봐도 정확히 이해를 못 했는데, 가만히 보니
- ! 명령어를 사용하면 각 줄의 명령어가 os.subprocess / 새 프로세스에서 마치 (새 shell 창 열고 실행하고 창 닫고 ) 를 반복하는 것이 되는 것이라 jupyter notebook명령어가 있는 해당 프로세스 / shell 자체에는 변화가 없는 것이고
- % 명령어를 사용하면 jupyter notebook을 실행하는 프로세스에서 shell commands를 실행하니 cd subfolder가 먹히는 것처럼 보이는 것임
- 그래서 !cd subfolder && pwd를 한번에 실행하면 '새로운 창 열고 >> cd subfolder 실행하고 >> pwd로 폴더 이름 보여주고 >> 창 닫힘' 순으로 process가 진행되니 폴더가 변경된 결과물 보여주고 CLOSE shell이라 결과물이 달라지는 것임
왜 이렇게 까지 찍어보느냐 하면
jupyter notebook에서 다른 것들은 크게 아쉬움이 없는데 그래프 그리는 예제 보면 %matplotlib 명령어를 써야 할 때가 자주 있음. 그런데... "%" vs " ! " 제대로 설명해 둔 곳이 없더라고,,, 그래서 !matplotlib이나 뭔가 다른 명령어를 썼을 때 적용이 안되곤 했었는데,, 그 원인이 이런 shell 명령어의 차이로 발생하는 것이라 추정됨
%matplotlib inline은 인라인 플롯을 활성화하는... (위 GPT설명에서 발췌)
_