Notepad++에서 Python을 실행하는 방법에 대해 정리해보겠습니다. 사실 요즘은 Notepad++보다 더 화려하고 Python과도 잘 어울리는 편집기도 많이 있는데요(예를 들어, Sublime Text, Atom, Visual Studio Code...), 개인적으로는 아직까지 Notepad++가 편하고 무난해서 자주 사용하고 있습니다.


Notepad++에서 Python 코드를 편집하고, Notepad++ 안에서 곧바로 실행시켜서 결과를 확인하려면 일단 Notepad++의 플러그인을 설치해야 하는데요, 설치할 플러그인의 이름은 NppExec 입니다. 말 그대로 Npp, 노트패드 플러스 플러스에서 Exec, 무언가를 실행할 수 있게 해주는 플러그인입니다. NppExec 플러그인은 Notepad++ 메뉴 중 [플러그인] -> [Plugin Manager] -> [Show Plugin Manager]를 선택하여 나타나는 리스트 중에 NppExec를 선택하여 추가할 수 있습니다. 만약 Notepad++ 64비트 버전을 사용하고 있다면 Plugin Manager를 수동으로 미리 설치를 해야 하는데요, 아래 링크에서 최신 버전을 다운받아 Notepad++ 설치 폴더 아래에 적당히 압축을 풀어주면 됩니다.

https://github.com/bruderstein/nppPluginManager/releases



일단 NppExec 플러그인을 설치하면 Notepad++ [플러그인] 메뉴 항목 아래에 NppExec 메뉴 항목이 새로 생깁니다. 일단 여기서 [Follow $(CURRENT_DIRECTORY)] 항목은 선택을 해두는 것이 좋습니다. 그렇지 않으면 파이썬 코드에서 파일 입출력을 할 때 예상치 못한 형태로 동작할 수 있습니다.


그리고 *.py로 끝나는 파이썬 프로그램 코드를 하나 열어서 [플러그인] -> [NppExec] -> [Execute] 메뉴를 선택하거나, 또는 단축키 F6을 누릅니다. 그러면 아래와 같은 NppExec 실행 창이 나타납니다.


Execute 창에는 실제 실행할 명령어를 입력하는데요, 아래와 같이 입력합니다.

NPP_SAVE
python "$(FULL_CURRENT_PATH)"


여기서 NPP_SAVE 명령은 프로그램을 실행하기 전에 파일을 저장하도록 하는 명령이고, 두 번째 줄이 실제 파이썬 프로그램으로 해당 *.py 파일을 실행하는 명령입니다. 명령어를 제대로 입력하고, 나중에 다시 사용하기 편하도록 [Save...] 버튼을 클릭하여 파이썬 실행을 위한 명령어를 기록해둡니다. 저는 python 이라는 제목으로 명령어를 저장해두었기에 그림 왼쪽 아래 콤보 박스에 python 이라고 써있습니다. 명령어 저장을 했으면 [OK] 버튼을 누릅니다. 그러면 아래와 같이 python 프로그램 실행 결과가 Console 창에 나타납니다.


참 쉽죠??


참고로 Python 실행 결과가 나타나는 Console 창의 폰트를 바꾸고 싶으면 [플러그인] -> [NppExec] -> [Change Console Font...] 메뉴를 선택하여 폰트를 변경할 수 있습니다.



'Study > Python' 카테고리의 다른 글

Jupyter Notebook 폰트 바꾸기  (0) 2017.10.15
Posted by kkokkal
:

패스트캠퍼스에서 진행하고 있는 OpenCV 강의에서 사용되는 예제 프로그램은 100개가 훨씬 넘습니다. 매번 새로운 강의가 시작될 때마다 Visual Studio 버전이 바뀌거나 OpenCV 라이브러리 버전이 바뀌면 모든 프로젝트를 새로 빌드해서 테스트를 진행하는데요, 100개가 넘는 프로젝트를 Visual Studio에서 불러와서 하나씩 하나씩 컴파일하고 빌드하려고 하면 너무 번거롭습니다. 그래서 일괄 빌드 방법을 알아봤습니다.


일단 저의 OpenCV 강의는 8주 과정으로 이루어져있기 때문에 "1주차_예제_코드", "2주차_예제_코드", ... 같은 형태의 폴더가 있고, 그 아래에 여러 개의 예제 프로젝트 폴더를 만들어두었습니다. 그러므로 현재 폴더에서 "N주차_예제_코드" 폴더를 모두 찾고, 그 아래에 있는 폴더들에 각각 들어가서 예제 프로젝트를 빌드해야 합니다. 이 작업을 수행하는 배치 파일 build_all.bat 파일을 아래와 같이 작성했습니다.


@ECHO OFF

SET CURR=%CD%
ECHO Current dir: %CURR%

FOR /D %%i IN (%CURR%\*) DO (
  PUSHD %%i
  ECHO Check sub-dir in %%i

  FOR /D %%k IN (%%i\*) DO (
    PUSHD %%k

    ECHO Now in %%k

    IF EXIST "*.vcxproj" (
      ECHO Build the project in %%k
	  
      msbuild /t:Rebuild /p:Configuration=Release
      copy .\x64\release\*.exe .
      rmdir x64 /S /Q
	  
    ) ELSE (
      ECHO No project in %%k
    )	

    POPD 
  )

  POPD 
)


위 배치 파일은 현재 폴더에서 하위 폴더들을 모두 찾고, 각각의 하위 폴더에서 또 한번 하위 폴더들을 찾아서 방문하고, 해당 폴더에 *.vcxproj 파일이 있는 경우에는 해당 프로젝트를 Release 모드로 빌드합니다. 그리고 생성된 ./release/<proj_name>.exe 파일을 프로젝트 폴더쪽으로 복사한 후, release 폴더는 지워버립니다. 그러면 나중에 실행 파일을 쉽게 실행하여 결과를 볼 수 있기 때문에 유용하죠.


아래는 실제로 build_all.bat 파일을 실행했을 때의 결과입니다. (프로젝트 몇 개만 복사해서 테스트해봤습니다.)


위에 나타난 도스창은 CMD 또는 일반 명령 프롬프트가 아니라 시작 메뉴에서 Developer Command Prompt for VS 2017 라는 이름을 검색해서 실행한 창입니다. Visual Studio 프로젝트 빌드를 위한 환경 설정이 적용된 창이라서 msbuild라는 이름의 빌드 명령을 사용할 수 있습니다.


만약 현재 폴더 아래의 하위 폴더에 존재하는 모든 프로젝트를 빌드하려면 위 배치 파일을 아래처럼 변경하면 되겠죠?

@ECHO OFF

SET CURR=%CD%
ECHO Current dir: %CURR%

FOR /D %%i IN (%CURR%\*) DO (
  PUSHD %%i
  ECHO Check sub-dir in %%i

  IF EXIST "*.vcxproj" (
    ECHO Build the project in %%i
	  
    msbuild /t:Rebuild /p:Configuration=Release
    copy .\x64\release\*.exe .
    rmdir x64 /S /Q
	  
  ) ELSE (
    ECHO No project in %%i
  )	

  POPD 
)


한 가지 주의할 점은, 빌드하려고 하는 전체 경로 이름에 빈칸이 있으면 안됩니다. 배치 파일의 FOR 구문에서 빈칸에 대해서는 제대로 처리를 하지 못하네요.


Posted by kkokkal
:

라즈베리파이 PIXEL 데스크탑에서 사용할 수 있는 화면 캡쳐 프로그램 scrot 사용법을 정리합니다.


scrot는 SCReenshOT의 약자이며, 말 그래도 화면 캡처를 하는 프로그램입니다. 기본적으로 텍스트 기반의 프로그램이며 일단 터미널 창에서 scrot -h 라고 입력하면 도움말을 보여주는데, 중요한 명령어가 위로 빨리 올라가버리니까 scrot -h | more 라고 입력하여 명령어를 확인합니다.


개인적으로 자주 쓰는 옵션은 -d, -u, -b 입니다.


-d는 delay를 의미하고, 보통 -d 5 처럼 바로 뒤에 숫자를 쓰면 해당하는 시간(초단위) 이후에 캡쳐를 합니다. 예를 들어, 웹브라우저가 떠있는 전체 화면을 캡쳐하려면 터미널 창을 하나 띄우고 여기에 scrot -d 5 라고 입력하고 터미널 창을 최소화하여 기다립니다.


-u 옵션은 현재 활성화된 왼도우만을 캡쳐하고 싶을 때 사용합니다. 예를 들어, 터미널 창을 2개 띄워놓고 ls 화면을 캡쳐하려면 다른 창에서 scrot -d 5 -u 라고 입력하고, 5초 안에 ls 명령을 내린 터미널 창을 클릭하여 활성화 시킵니다.


그런데 -u 옵션만 사용하면 윈도우 타이틀바와 테두리를 함께 캡쳐하지를 않네요. 뭔가 약간 어색해서, 보통은 -b 옵션을 같이 줘서 border까지 함께 캡쳐를 합니다. scrot -d 5 -u -b 라고 입력해도 되고, scrot -d 5 -ub 라고 입력해도 됩니다.


이렇게 캡쳐한 화면은 바로 위 터미널 ls 화면에 보라색 글씨로 나타난 것처럼 <날짜>-<시간>-<해상도>_scrot.png 형태의 이름으로 저장됩니다. 화면 캡쳐니까 png 파일 포맷이 적당해보입니다.


단축키도 지원을 하는데요, PrtSc 키를 누르면 전체 화면을 저장합니다. 음.. PrtSc 키에 대해서 scrot 화면 캡쳐를 하는 것은 ~/.config/openbox/lxde-pi-rc.xml 파일에서 키바인딩이 기본으로 되어 있기 때문인데요..


만약 ALT + PrtSc 키에 대해 현재 활성화된 화면 캡쳐를 수행하도록 하고, CTRL + PrtSc 키에 대해 윈도우 선택 또는 사각형 영역 지정 캡쳐를 수행하려면 아래와 같이 lxde-pi-rc.xml 파일을 편집하면 됩니다. (287~296라인) 그리고 재부팅 또는 openbox --reconfigure 명령을 입력하면 됩니다.



Posted by kkokkal
: