【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

좋은 웹페이지 즐겨찾기