성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Visual Studio Code에서 Python 개발 환경 구성</h1> <p> 당연히, Visual Studio Code를 다운로드해야겠지요! ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Download Visual Studio Code ; <a target='tab' href='https://code.visualstudio.com/download'>https://code.visualstudio.com/download</a> </pre> <br /> 그다음, 아무 파이썬 파일이나 열어주면 Visual Studio Code가 알아서 다음과 같이 "Python" 확장을 설치할 거냐고 물어봐 줍니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='vscode_python_1.png' src='/SysWebRes/bbs/vscode_python_1.png' /><br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > It is recommended to install the 'Python' extension. </pre> <br /> "Show recommendations" 버튼을 누르면 관련 '확장 도구' 목록들이 뜨고,<br /> <br /> <img alt='vscode_python_2.png' src='/SysWebRes/bbs/vscode_python_2.png' /><br /> <br /> 그중에서 (Don Jayamanne의) "Python"을 선택(물론, 취향에 따라 다른 Python 확장을 선택해도 됩니다.)하고 "Install" 버튼을 누르면 설치가 완료됩니다. 그 후 "Install" 버튼이 "Reload"로 바뀌는 데, 이를 눌러주면 Visual Studio Code가 다시 실행되면서 해당 확장을 함께 로드해 사용할 준비가 됩니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 당연히, 편집 중인 파이썬 코드를 실행해봐야겠지요? ^^ 그전에 Visual Studio 개발 환경의 전통적인 "F5 (Start Debugging)"을 해보겠습니다. 파이썬 소스 코드가 열린 상태에서 "F5" 키를 누르면 최초 한 번은 해당 소스 코드가 어떤 환경에서 실행되어야 하는지를 묻는 창이 뜹니다.<br /> <br /> <img alt='vscode_python_3.png' src='/SysWebRes/bbs/vscode_python_3.png' /><br /> <br /> 위처럼, "Python"을 선택하면 현재 파이썬 소스 코드 파일의 경로 하위에 ".vscode" 폴더 및 그 내부에 "launch.json" 파일이 생성되고 동시에 Visual Studio Code 내의 편집 파일로 로드가 됩니다. <br /> <br /> "launch.json"은 그냥 대충 훑어보시고, 다시 파이썬 소스 코드로 가서 "F5" 키를 누릅니다.<br /> <br /> 이 단계에서, 파이썬 확장 도구는 해당 컴퓨터에 설치된 "python.exe"를 이용하게 됩니다. 당연하겠지만, 해당 PC에 한 번도 python을 설치하지 않았다면 "F5" 키 실행은 되지 않고 다음과 같은 오류 메시지가 뜹니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='vscode_python_4.png' src='/SysWebRes/bbs/vscode_python_4.png' /><br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Failed to launch the Python Process, please validate the path 'python' Error: spawn python ENOENT </pre> <br /> 만약 설치한 적이 없다면 해주고, (여기서는 3.5.2 버전을 다운로드한 것으로 가정하겠습니다.)<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Python Releases for Windows ; <a target='tab' href='https://www.python.org/downloads/windows/'>https://www.python.org/downloads/windows/</a> Windows x86-64 executable installer (<a target='tab' href='http://www.sysnet.pe.kr/2/0/11118'>설치 방법</a>) ; <a target='tab' href='https://www.python.org/ftp/python/3.5.2/python-3.5.2-amd64.exe'>https://www.python.org/ftp/python/3.5.2/python-3.5.2-amd64.exe</a> </pre> <br /> 설치했는데도 동일한 오류가 발생한다면 시스템 환경 변수의 "PATH"에 python 설치 경로가 있는지 확인하고 없으면 등록해야 합니다. (이미 실행된 Visual Studio Code는 변경된 PATH 환경 변수를 인식하지 않으므로 새로 실행해야 합니다.)<br /> <br /> 여기까지 준비가 잘 되어 "F5" 키를 눌러 실행하면 디버그 환경으로 파이썬 코드가 실행되고, 원하는 코드에 "F9" 키로 정지점(Breakpoint)를 걸어 테스트해 볼 수 있습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> Visual Studio 사용자들은, "F5" 실행뿐만 아니라 "Ctrl + F5(Start Without Debugging)" 기능도 당연히 바라게 됩니다. Visual Studio Code의 경우에는 그와 비슷한 걸로 "Ctrl+Shift+B" 키가 제공됩니다.<br /> <br /> 그런데, "Ctrl+Shift+B" 키를 누르면 "No task runner configured." 메시지가 나오고 우측에 "Configure Task Runner", "Close" 버튼이 보입니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='vscode_run_1.png' src='/SysWebRes/bbs/vscode_run_1.png' /><br /> <br /> "Configure Task Runner"를 누르면 다음과 같이 빌드 도구를 선택하는 메뉴가 뜨는데, 여기서 맨 아래인 "Others"를 선택합니다. (만약, 메뉴에 있는 환경이라면 그걸 선택해도 되지만, Python의 경우에는 없으므로.)<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='vscode_run_2.png' src='/SysWebRes/bbs/vscode_run_2.png' /><br /> <br /> 그럼, ".vscode" 폴더에 "tasks.json" 파일이 생성되며 Visual Studio Code에 로드됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "command": "echo", "isShellCommand": true, "args": ["Hello World"], "showOutput": "always" } </pre> <br /> "command"에 "python"을 입력하면, Visual Studio Code가 환경 변수 PATH에 연결된 python.exe를 실행시켜 줍니다. 그리고 "args"에는 실행될 파일의 .py 이름을 넣어주면 됩니다. 이 글에서는 "helloworld.py"이기 때문에 최종적으로 다음과 같이 구성해 줄 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", <span style='color: blue; font-weight: bold'>"command": "python",</span> "isShellCommand": true, <span style='color: blue; font-weight: bold'>"args": ["helloworld.py"],</span> "showOutput": "always" } </pre> <br /> 그런데, 위와 같이 해주면 Visual Studio Code에서 다른 소스 코드 파일을 편집 중일 때도 Ctrl+Shift+B 키를 누르면 "helloworld.py" 소스 코드가 실행되는 문제가 있습니다. 따라서, "현재 편집 중인 파일"을 실행하라는 의미로 다음과 같이 "${file}"이라고 명시해주는 것이 더 낫습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "command": "python", "isShellCommand": true, <span style='color: blue; font-weight: bold'>"args": ["${file}"],</span> "showOutput": "always" } </pre> <br /> 이후로 아무 편집 파일이나 열어놓고 실행하고 싶을 때 Ctrl+Shift+B 키를 눌러주면 됩니다.<br /> <br /> tasks.json에 관한 좀 더 자세한 사항은 다음의 문서에서 찾을 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Integrate with External Tools via Tasks ; <a target='tab' href='http://code.visualstudio.com/docs/editor/tasks'>http://code.visualstudio.com/docs/editor/tasks</a> </pre> <br /> <hr style='width: 50%' /><br /> <br /> Python 확장 도구를 선택한 이후부터, .py 소스 코드를 편집해 저장할 때마다 다음과 같이 Linter가 설치되지 않았다는 메시지가 나옵니다.<br /> <br /> <img alt='vscode_pylint_1.png' src='/SysWebRes/bbs/vscode_pylint_1.png' /><br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Linter pylint is not installed. </pre> <br /> 그래서 "Install pylint"를 눌러 pylint를 설치할 텐데, 그래도 계속해서 저렇게 linter가 설치되지 않았다는 메시지가 나옵니다. 이런 경우 pylint.exe에 대해 Visual Studio Code가 찾을 수 없기 때문인데, 이를 해결하려면 pylint.exe가 있는 폴더를 환경 변수인 PATH에 등록시켜 주거나, ".vscode" 폴더에 "settings.json" 파일을 만들고 그 안에 다음과 같이 pylintPath를 명시해 주면 됩니다.<br /> <br /> <img alt='vscode_pylint_2.png' src='/SysWebRes/bbs/vscode_pylint_2.png' /><br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > { "python.linting.pylintPath": "${env.USERPROFILE}/AppData/Local/Programs/Python/Python35/Scripts/pylint.exe" } </pre> <br /> 이런 식으로 pylint가 함께 사용되는 것은 이 글에서 설치한 (Don Jayamanne의) "Python" 확장 도구에 한해서입니다. 즉, 다른 확장 도구를 설치하면 lint 기능이 없을 수도 있고 lint 경로를 제공해주는 방법도 다를 수 있습니다. (Don Jayamanne의) "Python" 확장 도구에 대한 좀 더 자세한 설명은 다음의 문서에서 찾을 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > DonJayamanne/pythonVSCode ; <a target='tab' href='https://github.com/DonJayamanne/pythonVSCode/wiki'>https://github.com/DonJayamanne/pythonVSCode/wiki</a> </pre> <br /> <hr style='width: 50%' /><br /> <br /> 이 정도면... python을 Visual Studio Code에서 실습하는 데 크게 어려움은 없을 것입니다. ^^<br /> <br /> <hr style='width: 50%' /><br /> db 연동 코드 조각과,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > # pip install pymysql import pymysql dbURL = '...' dbPort = 3306 dbUser = '..' dbPass = '...' conn = pymysql.connect(host=dbURL, port=dbPort, user=dbUser, passwd=dbPass, db='testdb', charset='utf8', use_unicode=True) sql = "INSERT INTO test(name, age, addr) VALUES (%s, %s, %s);" cur = conn.cursor() cur.execute(sql, ("홍길동", "25", "서울")) conn.commit() sql = "SELECT * FROM testdb.test" cur = conn.cursor() cur.execute(sql) result = cur.fetchall() conn.commit() print(result) print(type(result)) conn.close() </pre> <br /> <a name='bs4'></a>크롤링 코드 조각!<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > # pip install beautifulsoup4 import urllib.request import bs4 web_page = urllib.request.urlopen('https://www.naver.com') result = bs4.BeautifulSoup(web_page, 'html.parser') news_list = result.find_all('img', class_='news_logo') for news in news_list: print(news['alt'], end=',') /* 출력 결과 뉴시스,한겨레,스포탈코리아,헤럴드경제,뉴스타파,국민일보,KBS World,JTBC,지지통신,아이뉴스24,머니투데이,디지털타임스,노컷뉴스,문화일보,지디넷코리아,중부일보,기호일보,경인일보,법률신문,국방일보,머니에스,뉴스엔,법률방송뉴스,인벤, */ </pre> <br /> <hr style='width: 50%' /><br /> Django 기본 실습<br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > // 설치 c:\temp> pip install Django c:\temp> cd d:\mywork // 기본 프로젝트 코드 생성 d:\mywork> django-admin startproject myapp d:\mywork> cd myapp // 실행 d:\mywork\myapp> python manage.py runserver 8000 Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. August 05, 2021 - 10:35:17 Django version 3.2.6, using settings 'myapp.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK. // Django 환경의 shell // d:\mywork\myapp> python manage.py shell // 프로젝트 내에 또 다른 app 생성 d:\mywork\myapp> python manage.py startapp bbs /* ./myapp/settings.py에 "INSTALLED_APPS"에 "bbs" 추가 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'bbs' ] */ // model 및 view(Generic View - View, TemplateView, RedirectView, DetailView, ListView) 추가하고, // 추가된 model에 대한 데이터베이스 scheme 만드는 python 스크립트 파일 생성 (nnnn_initial.py) d:\mywork\myapp> python manage.py makemigrations // /migrations 디렉터리에 있는 스크립트를 기반으로 한 물리적인 데이터베이스 scheme 동기화(settings.py에 지정된 DB 연결 문자열 정보 기반) d:\mywork\myapp> python manage.py migrate // 관리자 계정 설정 d:\mywork\myapp> python manage.py createsuperuser Username (leave blank to use 'testusr'): testusr Email address: testusr@test.com Password: Password (again): Superuser created successfully. // 관리자 계정 확인 // http://127.0.0.1:8000/admin </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > // virtualenv 설치 c:\temp> pip install virtualenv // 새로운 virtualenv 생성 c:\temp> virtualenv myapp </pre> <br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1835
(왼쪽의 숫자를 입력해야 합니다.)