【windows+anaconda】 커멘드 프롬프트 기동시에, 자동으로 환경을 activate한다
배경
windows+anaconda+ 명령 프롬프트에서 python을 사용하고 있습니다. 한 환경 내에서 작업할 때 명령 프롬프트를 열고 일일이
activate hogehoge
등으로 하는 것은 매우 귀찮습니다. 그래서 명령 프롬프트를 시작할 때 자동으로 환경에 들어가는 방법을 조사했습니다. IDE를 사용하면 괜찮습니다.환경
windows10 64bit
아나콘다 1.6.0
결론
cmdrc 쓰기
이유
공식 환경 운영 참조 이나 stackoverflow 질문 를 보는 한, (ana)conda 측에서는, 환경의 자동 액티베이트에 대응하고 있지 않다고 생각됩니다.
그래서 명령 프롬프트를 시작할 때 자동으로 실행되는 파일을 만들고 그 안에서 환경을 활성화하는 방법이 가장 간단하다고 생각했습니다.
방법
레지스트리를 편집합니다. 작업은 자기 책임으로 실시하십시오.
적당한 폴더(여기서는
C:\Users\USER\
라고 합니다)에 cmdrc.bat
라는 파일을 만들어, 이하의 내용을 써 넣습니다.cmdrc.bat
@echo off
cd /d %~dp0
if not exist "_TMP" (
type nul > _TMP
activate python_env
del "_TMP"
)
python_env
는 각자의 환경에 옮겨놓아 주세요.저장하면 레지스트리 편집기를 열고
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor
안에 AutoRun
라는 이름으로 문자열 값을 만듭니다. 값의 데이터는 cmdrc.bat
에 대한 경로입니다.이를 저장한 후, 명령 프롬프트를 열면, 환경이 활성화된 상태로 기동할 것입니다.
cmdrc.bat의 해설
@echo off
: 명령의 실행을 화면에 표시하지 않고 실행하도록 설정하는 명령입니다. 그렇지 않으면 이 파일에서 실행한 모든 명령이 화면에 표시됩니다.cd /d %~dp0
: 현재 디렉토리를 배치 파일이 있는 위치로 이동시키는 명령입니다. 명령 프롬프트를 시작한 직후에는 C:\WINDOWS\System32
에 현재 디렉터리가 설정되어 있으므로 그대로라고 나중에 설명하는 _TMP
파일을 만들 수 없습니다.if not exist "_TMP" (
type nul > _TMP
activate python_env
del "_TMP"
)
단순히
activate python_env
로 하는 것이 아니라, _TMP
가 존재하는지 어떤지로 처리를 바꾸고 있습니다 (존재하는 경우는 아무것도 하지 않는다).경우 나누기를 쓰지 않고
activate python_env
라고만 했는데, 컴퓨터가 대량으로 메모리를 소비해, 커멘드 프롬프트가 멈췄습니다. 아마도 activate를 실행할 때 뒤에서 새롭게 배치 파일을 기동하고 있어, 배치 파일 기동→activate를 실행→activate가 배치 파일 기동→그 배치 파일이 activate를 실행…과 무한하게 배치 파일이 실행되고 버리는 것이 아닐까 생각합니다.최초의 실행으로
_TMP
라고 하는 파일을 작성해, 그 이후의 배치 파일에서는 activate
를 실행시키지 않게 하는 것으로, 무한 루프를 막고 있습니다.참고 사이트
htp://C4세. 하테나 bぉg. 소 m/엔try/2012/10/19/230718
h tp // w w. 안녕하세요. 이 m/do s/바 tch-g 라마 r/이 f/이 f. HTML
htp // d. 하테나. 네. jp/나카무라 001/20090203/1233652705
htps //w w. k-타나카. 네 t/cmd/에서 l. php
ぃ tp // 이 m/i s_보오 ks/있어 ms/44d4c이다 4에11에194b8345
h tp // 키요타카쿠보. 하테나 bぉg. 코m/엔트리/20090214/1234622897
Reference
이 문제에 관하여(【windows+anaconda】 커멘드 프롬프트 기동시에, 자동으로 환경을 activate한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nbit/items/cf685331e8d9984d3216텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)