'Django/Setup'에 해당되는 글 1건

  1. 2020.02.22 Django Setup
Django/Setup2020. 2. 22. 19:57

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. 웹브라우저로 접속

http://localhost:8000

웹브라우저에 위의 URL에 접속해보면 로켓트와 아래의 문장이 보이면 성공한 것이다

The install worked successfully! Congratulations!

 

포트번호 변경

에러나 접속이 되지 않는 경우에는 8000 번 포트번호를 이미 다른 프로그램에서 사용 중일 경우가 많다. 다음과 같은 명령을 사용하여 포트번호를 변경할 수 있다

python manage.py runserver 8001

 

 

Posted by cwisky