Python 설치 / PATH 환경변수 설정
가상환경(Vertual Environment)
한개의 가상환경은 다른 가상환경과 서로 디렉토리가 다르며 파이썬과 그 라이브러리의 버전을 달리 설치할 수 있다
1. 가상환경을 설치할 디렉토리 생성
django_web 등의 임의의 이름을 가진 디렉토리를 생성한다
아래의 모든 명령은 언급이 없으면 위에서 생성한 디렉토리 안에서 실행한다
CMD를 이용하여 특정 디렉토리로 이동하여 그 곳에 가상환경을 생성하는 명령은 다음과 같다.
python -m venv venv01 /* venv01 은 가상환경의 이름이며 해당 디렉토리가 생성된다 */
2. 가상환경의 활성화
source venv01/bin/activate
가상환경이 활성화된 후에라야 해당 가상환경에 패키지를 설치할 수 있고 가상환경에 이미 설치된 파이썬 패키지를 사용할 수가 있다
윈도우 환경에서는 'source' 를 빼고 그냥 'venv01\Scripts\activate' 명령을 사용하고,
Power Shell 을 사용한다면 Activate 첫자는 대문자('A')를 사용해야 한다
가상환경이 활성화되면 아래처럼 괄호 안에 가상환경의 이름이 표시된다
(venv01) c:\Python_Projects>
가상환경이 활성화된 경우에만 Django 를 사용할 수 있다
필요시 가상환경의 비활성화 명령
deactivate
커맨드창을 닫으면 가상환경도 비활성화된다
3. Django 설치
가상환경이 생성되고 활성화된 디렉토리 안에서 다음과 같은 명령으로 해당 가상환경에 Django를 설치할 수 있다.
장고 2.2 버전에 맞는 mysqlclient 가 아직 없기 때문에 장고 2.1버전을 설치한다(2020.03.02현재 장고 2.2 와 mysqlclient를 연결하는 과정에서 아래와 같은 오류가 발생함)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
pip install django <- django 최신버전이 설치되어 mysqlclient 현재버전과 연결할 때 오류발생
MySQL 8 버전과 호환되는 Django 2.1을 설치할 때는 아래처럼 버전을 지정할 수 있다
pip install django==2.1
4. Django 프로젝트 생성
django-admin startproject myproj .
마지막에 있는 점(.)을 빠뜨리지 않도록 한다. 만약 빠뜨린 경우에는 가상한경 디렉토리만 남기도 모두 삭제한 후에 다시 명령을 실행한다
MySQL 설정
디폴트로 제공되는 SQLite3 데이터베이스를 사용하지 않고 MySQL 을 사용하려는 경우에는 아래처럼 변경한다
윈도우용 MySQL Client 설치(사용하는 Python 버전에 따라 적당한 설치파일 선택)
MySQL 8, Python 3.8, Django 2.1 환경일 때 아래의 방법으로 문제 없이 성공함
윈도우용 mysqlclient 다운로드(cp38: 파이썬 3.8의미, 설치된 Python이 32비트인지 64비트인지 확인하여 해당파일 사용). mysqlclient 설치에 실패하면 64비트 버전과 32비트 버전을 변경하여 설치하면 성공하는 경우도 있다고 함
4. 설치된 Python의 몇 비트인지 확인하는 Python명령
>>> import platform
>>> print(platform.architecture())
5. 미리 컴파일된 mysqlclient 다운로드
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
6. MySQL Client 설치
Downloads 폴더에 다운로드했다면, 해당 폴더로 이동하여
pip install mysqlclient-1.4.6-cp38-cp38-win32.whl
7. pymysql 모듈 설치
pymysql 모듈을 사용하는 경우
pip install pymysql
프로젝트 폴더 안의 settings.py를 열고 ...
8. settings.py 파일 내용의 맨 위에 다음과 같이 추가한다
import pymysql
pymysql.install_as_MySQLdb()
9. settings.py 중간 약간 아랫쪽에서 다음과 같은 내용을 찾아서 아래처럼 변경한다
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
# 디폴트 상태는 아래와 같다
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# MySQL을 사용하려면 위의 내용을 아래처럼 해당 데이터베이스 연결정보로 변경한다
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'testdb',
'USER': 'root',
'PASSWORD': 'a1234',
'HOST': 'localhost',
'PORT': '3306',
}
}
10. cryptography 설치
pip install cryptography
11. 프로젝트를 관리할 데이터베이스 생성
python manage.py migrate
settings.py 에 설정된 데이터베이스가 생성된다
위의 과정 중에 아래처럼 오류가 발생할 수 있다
RuntimeError: cryptography is required for sha256_password or caching_sha2_password
위의 오류는 cryptography 모듈이 설치되지 않았기 때문에 발생하므로 아래처럼 설치한 다음, 위의 명령을 다시 실행한다
데이터베이스 생성에 성공하면 MySQL 의 지정된 DB(여기서는 testdb) 안에 10개 정도의 테이블이 생성된 것을 확인할 수 있다(MySQL Workbench 등에서 쉽게 확인)
12. 내장된 웹서버를 실행하여 프로젝트 작동상태를 웹브라우저로 확인
python manage.py runserver
(venv01) c:\Python_Projects>python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). February 22, 2020 - 19:39:13 Django version 3.0.3, using settings 'myproj.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK. |
CTRL-C 를 사용해도 웹서버를 중지할 수 있다
13. 웹브라우저로 접속
웹브라우저에 위의 URL에 접속해보면 로켓트와 아래의 문장이 보이면 성공한 것이다
The install worked successfully! Congratulations!
포트번호 변경
에러나 접속이 되지 않는 경우에는 8000 번 포트번호를 이미 다른 프로그램에서 사용 중일 경우가 많다. 다음과 같은 명령을 사용하여 포트번호를 변경할 수 있다
python manage.py runserver 8001