Pytorch: RuntimeError: DataLoader ์ž‘์—…์ž๊ฐ€ ์‹ ํ˜ธ์— ์˜ํ•ด ์ข…๋ฃŒ๋จ: Killed.

์— ๋งŒ๋“  2018๋…„ 06์›” 28์ผ  ยท  20์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pytorch/pytorch

๋ฌธ์ œ ์„ค๋ช…

์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "/usr/lib/python3.5/runpy.py", 184ํ–‰, _run_module_as_main
"__main__", mod_spec)
ํŒŒ์ผ "/usr/lib/python3.5/runpy.py", 85ํ–‰, _run_code
exec(์ฝ”๋“œ, run_globals)
ํŒŒ์ผ "/media/zonstlab0/c3e7052f-24ed-4743-8506-fb7b8c6f0ba7/zonstlab0/myluo/Diagnosis/main_PVC.py", 161ํ–‰, in
๊ธฐ์ฐจ(์—ํฌํฌ)
ํŒŒ์ผ "/media/zonstlab0/c3e7052f-24ed-4743-8506-fb7b8c6f0ba7/zonstlab0/myluo/Diagnosis/main_PVC.py", 104ํ–‰, ๊ธฐ์ฐจ
enumerate(train_loader)์˜ batch_idx, (๋ฐ์ดํ„ฐ, ๋ ˆ์ด๋ธ”):
ํŒŒ์ผ "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", 280ํ–‰, __next__
idx, ๋ฐฐ์น˜ = self._get_batch()
ํŒŒ์ผ "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", 259ํ–‰, _get_batch
self.data_queue.get() ๋ฐ˜ํ™˜
ํŒŒ์ผ "/usr/lib/python3.5/queue.py", 164ํ–‰, get
self.not_empty.wait()
ํŒŒ์ผ "/usr/lib/python3.5/threading.py", 293ํ–‰, ๋Œ€๊ธฐ ์ค‘
waiter.acquire()
ํ•ธ๋“ค๋Ÿฌ์˜ ํŒŒ์ผ "/usr/local/lib/python3.5/dist-packages/torch/utils/data/dataloader.py", ๋ผ์ธ 178
_error_if_any_worker_fails()
RuntimeError: DataLoader ์ž‘์—…์ž(pid 4161)๊ฐ€ ์‹ ํ˜ธ์— ์˜ํ•ด ์ข…๋ฃŒ๋จ: Killed.

์•”ํ˜ธ

https://github.com/Lmy0217/MedicalImaging/blob/pve/main_PVC.py#L79

์‹œ์Šคํ…œ ์ •๋ณด

ํŒŒ์ดํ† ์น˜ ๋ฒ„์ „: 0.4.0
๋””๋ฒ„๊ทธ ๋นŒ๋“œ ์—ฌ๋ถ€: ์•„๋‹ˆ์š”
PyTorch ๋นŒ๋“œ์— ์‚ฌ์šฉ๋œ CUDA: 9.0.176

OS: ์šฐ๋ถ„ํˆฌ 16.04.4 LTS
GCC ๋ฒ„์ „: (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
CMake ๋ฒ„์ „: ๋ฒ„์ „ 3.5.1

ํŒŒ์ด์ฌ ๋ฒ„์ „: 3.5
CUDA ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€: ์˜ˆ
CUDA ๋Ÿฐํƒ€์ž„ ๋ฒ„์ „: ์ˆ˜์ง‘ํ•  ์ˆ˜ ์—†์Œ
GPU ๋ชจ๋ธ ๋ฐ ๊ตฌ์„ฑ: GPU 0: TITAN Xp
Nvidia ๋“œ๋ผ์ด๋ฒ„ ๋ฒ„์ „: 384.130
cuDNN ๋ฒ„์ „: ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
/usr/lib/x86_64-linux-gnu/libcudnn.so.7.1.2
/usr/lib/x86_64-linux-gnu/libcudnn_static_v7.a

๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „:
[pip3] numpy (1.14.3)
[pip3] ํŒŒ์ดํ† ์น˜๋น„์ฆˆ(0.0.1)
[pip3] ํ† ์น˜(0.4.0)
[pip3] ํ† ์น˜ ํŒŒ์ผ(0.1.0)
[pip3] ํ† ์น˜๋น„์ „(0.2.1)
[conda] ์ˆ˜์ง‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ตœ๊ทผ์— ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

docker ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PyTorch ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋†’์€ ํ™•๋ฅ ๋กœ docker์˜ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ง€์ •๋œ ๋ฐฐ์น˜ ํฌ๊ธฐ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ์— ์ถฉ๋ถ„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ์ƒํ™ฉ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋” ์ž‘์€ ๋ฐฐ์น˜ ํฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ํ›ˆ๋ จ์‹œํ‚ค์‹ญ์‹œ์˜ค.
  2. ํ˜„์žฌ ๋„์ปค๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์ปดํ“จํ„ฐ์— ๋”ฐ๋ผ ์ง€์ •๋œ "--shm-size=16g" ๋˜๋Š” ๋” ํฐ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์œผ๋กœ ๋„์ปค๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์„ ๋„์šธ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.:+1:

๋ชจ๋“  20 ๋Œ“๊ธ€

๋ฐ์ดํ„ฐ ๋กœ๋” ์ž‘์—…์ž ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹ ํ˜ธ์— ์˜ํ•ด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@SsnL ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

@Lmy0217 num_workers=0 ์‹คํ–‰์„ ์‹œ๋„ํ•˜๊ณ  ๋” ๋‚˜์€ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—).

@SsnL num_workers=0 ์„ค์ • ํ–ˆ๋Š”๋ฐ ์˜ค๋ฅ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ ์„ธํŠธ __getitem__ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋‹ค์ค‘ ์ฒ˜๋ฆฌ๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋ฌด์—‡์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@SsnL ํ•˜์ง€๋งŒ num_workers=1 ํ•˜๋ฉด ๋‚ด ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ณ ๋ฆฝ ๋œ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋‹ค์ค‘ ์ฒ˜๋ฆฌ๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š์„ ์ˆ˜์žˆ๋Š” ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜์—ฌ https://discuss.pytorch.org๋กœ ์—ฐ๊ฒฐ

์ตœ๊ทผ์— ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

docker ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PyTorch ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋†’์€ ํ™•๋ฅ ๋กœ docker์˜ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ง€์ •๋œ ๋ฐฐ์น˜ ํฌ๊ธฐ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ์— ์ถฉ๋ถ„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด ์ƒํ™ฉ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋” ์ž‘์€ ๋ฐฐ์น˜ ํฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ํ›ˆ๋ จ์‹œํ‚ค์‹ญ์‹œ์˜ค.
  2. ํ˜„์žฌ ๋„์ปค๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์ปดํ“จํ„ฐ์— ๋”ฐ๋ผ ์ง€์ •๋œ "--shm-size=16g" ๋˜๋Š” ๋” ํฐ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์œผ๋กœ ๋„์ปค๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์„ ๋„์šธ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.:+1:

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ CPU์—์„œ ์‹คํ–‰ํ–ˆ๊ณ  ๋˜ํ•œ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค: RuntimeError: DataLoader worker (pid 6790) is killed by signal: Killed.

๋‚˜๋Š” @SsnL์„ ๋”ฐ๋ผ

๋นˆ๋‹น ์ธ์Šคํ„ด์Šค ์ˆ˜: [85308 31958]
ํ…Œ์ŠคํŠธ: [ 0/5000] eta: 8:26:32 model_time: 5.8156 (5.8156) evaluator_time: 0.1168 (0.1168) ์‹œ๊ฐ„: 6.0785 ๋ฐ์ดํ„ฐ: 0.1460
์ฃฝ์ž„

๋„์™€์ฃผ์„ธ์š”. ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

num_workers=0์œผ๋กœ ์„ค์ •ํ•ด๋„ "Killed"๋ผ๋Š” ์ •๋ณด๋งŒ ๋‚จ๊ธฐ๊ณ  ํ›ˆ๋ จ์ด ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ข…๋ฃŒ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋กœ๋”๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ ๋˜๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ ๋•Œ๋ฌธ์ธ์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋กœ๋”๋ฅผ ๋‹จ๋…์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  num_workers=0์œผ๋กœ ์„ค์ •ํ–ˆ๋Š”๋ฐ ๋ช‡ k ๋ฐ˜๋ณต ํ›„์— ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ms coco ๋ฐ์ดํ„ฐ ์„ธํŠธ์ด๊ณ  ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๋Š” 64GB์ด๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๋ชจ๋ธ๊ณผ ๋™์ผํ•œ ์˜ค๋ฅ˜

๊ณ ์ •๋˜์–ด ์žˆ๊ฑฐ๋‚˜? ์•„์ง ๊ฑฐ๊ธฐ ์žˆ์–ด?

@SystemErrorWang ๊ฐ™์€ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค. 252G ์ด์ƒ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ Dataloader๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. htop ๋ช…๋ น์œผ๋กœ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ–ˆ๋Š”๋ฐ num_workers= 16์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ํ•ญ์ƒ 30G ๋ฏธ๋งŒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค๊ฐ€ ์•„๋‹Œ ์šฐ๋ถ„ํˆฌ 18.04 ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (btw, pytorch ๋ฒ„์ „์€ python 3.7.4์—์„œ 1.4.0์ž…๋‹ˆ๋‹ค)

๊ทธ๋ž˜์„œ... ๊ทธ๊ฒƒ์„ ๊ณ ์น˜๋Š” ๋ฐฉ๋ฒ•?

CPU ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์ž‘์—…์ž๋ฅผ 20๋ช… ๋Œ€์‹  10๋ช…์œผ๋กœ ์ค„์ด๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. nn.DataParallel๊ณผ ํ•จ๊ป˜ ์—ฌ๋Ÿฌ GPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 2-4๊ฐœ์˜ GPU๊ฐ€ ํ•„์š”ํ•œ ํฐ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•  ๋•Œ๋งŒ ์ด๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ๊ณต์‹ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? 8๊ฐœ์˜ ์ฝ”์–ด์™€ 32GB์˜ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๋ชจ๋ธ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์œผ๋ฉฐ num_workers (0 ์ œ์™ธ)๋ฅผ ์–ผ๋งˆ๋‚˜ ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜๋”๋ผ๋„ ์—ฌ์ „ํžˆ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@import-antigravity ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ™˜๊ฒฝ๊ณผ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ฝ”๋“œ์˜ ์กฐํ•ฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ™˜๊ฒฝ๊ณผ ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ฝ”๋“œ์˜ ์กฐํ•ฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@SsnL
๋ฌด์Šจ ๋œป์ด์—์š”? ๋‚˜์œ ๊ฒฝ์šฐ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ตœ์†Œํ•œ์˜ ์˜ˆ๋ฅผ ์ œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๊ฒฝ์šฐ @SsnL ์€ ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ๋ถ„ํฌ์—์„œ ์ƒ˜ํ”Œ์„ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

from torch import Tensor
from torch.distributions import Distribution
from torch.utils.data import Dataset

class ProceduralDataset(Dataset, ABC):
    <strong i="7">@property</strong>
    <strong i="8">@abstractmethod</strong>
    def distribution(self) -> Distribution:
        pass

    def __init__(self, num_samples: int):
        self._n = num_samples
        self._samples = None

    def __getitem__(self, i):
        if self._samples is None:
            self._samples = self.distribution.sample((self._n,))
        return self._samples[i], Tensor()

    def __len__(self):
        return self._n

    def __iter__(self):
        self._i = 0
        return self

    def __iter__(self):
        self._i = 0
        return self

    def __next__(self):
        self._i += 1
        return self[self._i - 1]

์ตœ๊ทผ์— ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ์—์„œ ๋ชจ๋ธ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ virtualenv ๋ช…๋ น์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ปดํ“จํ„ฐ์— ๋งŽ์€ ์ž‘์—…์ž๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋กœ๋”๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ์ด๊ฒƒ๊ณผ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ œ๊ฑฐํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

virtualenv ~/env
source ~/env/bin/activate

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

rm -rf env
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰