단어 추출 도구(2): 단어 추출 도구 실행환경 구성

단어 추출 도구는 Python으로 개발된 도구이고, 실행에 앞서 Python과 필요한 package 설치 등의 환경 구성 과정이 필요하다. 단어 추출 도구 실행환경 구성 에 대해 살펴본다.

이전 글에서 이어지는 내용이다.

단어 추출 도구(1): 단어 추출 도구 개요

2. 단어 추출 도구 실행환경 구성

2.1. 환경 구성 개요

2.1.1. 권장사항

Anaconda보다는 Miniconda 설치를 권장한다. Anaconda는 너무 많은 package를 기본환경에 설치하여 용량이 크다. 용량이 작고 가볍게 시작할 수 있는 Miniconda를 사용하는 것이 좋다.

Miniconda를 설치하지 않았을 경우 virtualenv 설치를 권장한다. 기본 환경과 격리된 별도의 환경에 package를 설치하면 package의 버전 충돌 문제등을 피할 수 있다.

만약 별 문제가 없을 거라고 판단되거나 단어추출기만을 사용하는 경우 기본환경을 사용해도 무방하다. 이 글은 Windows 10 64bit에서 Miniconda를 사용하는 방법을 설명한다.

2.1.2. 형태소 분석기 선택: Mecab

Mecab은 공개되어 있는 자연어 형태소 분석기중 실행이 가장 빠르고 단어추출이라는 목적에 가장 부합하여 선택하였다. Mecab이 아닌 다른 형태소 분석기를 사용하려면 get_word_list() 함수를 고쳐 사용하면 된다.

2.1.3. 환경 구성 전체 순서

  1. Miniconda 설치
  2. 가상환경 생성, 활성화
  3. 가상환경에 Python 설치
  4. 가상환경에 필요한 package 설치 (가상환경을 사용하지 않는 경우 기본환경에 설치)

2.2. Miniconda 설치

https://conda.io/en/latest/miniconda.html#windows-installers 에서 Python version을 선택하여 다운로드 한다. 단어 추출 도구는 Python 3.8에서 개발하였고, 3.9에서도 잘 동작한다. 여기서는 3.9를 다운로드하고 설치하겠다.

Miniconda Windows Installers version
Miniconda Windows Installers version

다운로드된 파일(Miniconda3-py39_4.10.3-Windows-x86_64.exe)을 실행하여 설치를 진행한다. Next 버튼을 몇 번 클릭하면 설치가 완료된다.

Miniconda 설치 화면
Miniconda 설치 화면

이후 작업은 Miniconda Prompt에서 실행한다. 다음 경로에서 실행할 수 있다.

시작메뉴 > Anaconda3 (64bit) > Anaconda Prompt (miniconda3)

Miniconda Prompt 실행
Miniconda Prompt 실행

2.3. 가상환경 생성, 활성화

Miniconda Prompt를 처음 실행하면 기본 환경(base)이 활성화되어 있다. (위 이미지 참조)

단어 추출 도구를 위한 별도의 가상환경을 생성한다.

(base) C:\Users\ymlee>conda create -n wordextr

다음 명령으로 생성한 가상환경을 활성화한다. 명령어 실행 후 가상환경명(wordextr)이 앞에 보이면 정상적으로 활성화 된 것이다.

(base) C:\Users\ymlee>conda activate wordextr
(wordextr) C:\Users\ymlee>

2.4. 가상환경에 Python 설치

다음 명령어를 실행한다.

(wordextr) C:\Users\ymlee>conda install python

다음과 같은 내용이 출력된다.

(wordextr) C:\Users\ymlee>conda install python
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\Users\ymlee\miniconda3\envs\wordextr

  added / updated specs:
    - python


The following NEW packages will be INSTALLED:

  ca-certificates    pkgs/main/win-64::ca-certificates-2021.7.5-haa95532_1
  certifi            pkgs/main/win-64::certifi-2021.5.30-py39haa95532_0
  openssl            pkgs/main/win-64::openssl-1.1.1l-h2bbff1b_0
  pip                pkgs/main/win-64::pip-21.2.4-py38haa95532_0
  python             pkgs/main/win-64::python-3.9.7-h6244533_1
  setuptools         pkgs/main/win-64::setuptools-58.0.4-py39haa95532_0
  sqlite             pkgs/main/win-64::sqlite-3.36.0-h2bbff1b_0
  tzdata             pkgs/main/noarch::tzdata-2021a-h5d7bf9c_0
  vc                 pkgs/main/win-64::vc-14.2-h21ff451_1
  vs2015_runtime     pkgs/main/win-64::vs2015_runtime-14.27.29016-h5e58377_2
  wheel              pkgs/main/noarch::wheel-0.37.0-pyhd3eb1b0_1
  wincertstore       pkgs/main/win-64::wincertstore-0.2-py39h2bbff1b_0


Proceed ([y]/n)?

그냥 엔터키를 누르거나 y 입력후 엔터키를 누르면 설치가 시작된다. 참고로, 설치하지 않으려면 n 입력후 엔터키를 누른다.

2.5. 필요한 package 설치

다음의 명령어로 필요한 package를 설치한다. wordcloud, eunjeon은 conda에서 제공하지 않아 pip로 설치해야 한다.

conda install pywin32
conda install pandas
conda install Jinja2
conda install xlsxwriter
pip install wordcloud
pip install eunjeon

각 package의 용도는 다음과 같다.

  • pywin32: MS Word, PowerPoint, Excel 파일을 OLE automation 방식으로 열어서 읽는데 사용
  • pandas: 단어 추출 결과를 메모리에서 관리하고, 마지막에 엑셀 파일에 저장하는데 사용
  • Jinja2, xlsxwriter: pandas에서 ExcelWriter에 사용
  • wordcloud: 단어 추출 결과를 시각화하는데 사용
  • eunjeon: 한국어 형태소 분석기 Mecab 사용

eunjeon 설치시 “Microsoft Visual C++ 14.0 or greater is required.” 오류가 발생하는 경우 아래 URL에서 ‘재배포 가능 패키지 및 빌드 도구’ 중 ‘Microsoft Build Tools 2015 업데이트 3’를 다운로드 받아서 설치하고 다시 시도한다.

https://visualstudio.microsoft.com/ko/vs/older-downloads/#microsoft-build-tools-2015-update-3

설치시 “C++를 사용한 데스크톱 개발”을 선택하고 설치한다. (아래 화면은 설치 이후에 캡쳐한 화면으로 설치시 화면과 약간 다르다)

Microsoft Build Tools 2015 업데이트 3 설치
Microsoft Build Tools 2015 업데이트 3 설치

“Microsoft Build Tools 2015 업데이트 3” 설치 완료 후, 다음 명령으로 eunjeon을 설치한다.

pip install eunjeon

eunjeon 설치가 완료되었으면, “Microsoft Build Tools 2015 업데이트 3″은 제거해도 된다.

시작 메뉴에서 ‘Visual Studio Installer’를 실행하고 “C++를 사용한 데스크톱 개발” 선택 해제, 우측 하단의 “수정”버튼을 클릭하여 제거한다.

Visual Studio Installer 실행
Visual Studio Installer 실행
Microsoft Build Tools 2015 업데이트 3 제거
Microsoft Build Tools 2015 업데이트 3 제거

여기까지 진행하면 환경구성은 완료되었다. 다음에는 단어 추출 도구 실행과 결과를 확인하는 방법에 대하여 살펴보겠다.


<< 관련 글 목록 >>

7 Responses

  1. 아바타 사진 김철민 댓글:

    (wordextr) E:\WordExtractor>python word_extractor.py –in_path .\in –out_path .\out
    python을 처음 사용하는 초보입니다ㅠㅠ. 위와 같이 실행을 했는데 아래와 같은 결과가 나왔습니다. 뭔가 경로지정이 잘못된 것 같은데 이 초보가 해결을 못하는군요ㅠ. 도와주시면 감사하겠습니다(정확하게 in, out폴더는 만들어져 있음).

    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    ————————————————————
    Word Extractor v0.41 start — 2023-11-20 03:13:07.584787
    ##### arguments #####
    multi_process_count: 32
    db_comment_file: None
    in_path: .\in
    out_path: .\out
    ————————————————————
    [2023-11-20 03:13:07.586789] Start Get File List…
    [2023-11-20 03:13:07.586789] Finish Get File List.
    — File List —
    E:\WordExtractor\in\test.txt
    [2023-11-20 03:13:07.588790] Start Get File Text…
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)
    E:\WordExtractor\word_extractor.py:382: SyntaxWarning: invalid escape sequence ‘\o’
    usage_description = “””— Description —
    E:\WordExtractor\word_extractor.py:406: SyntaxWarning: invalid escape sequence ‘\i’
    parser.add_argument(‘–in_path’, required=False, help=’입력파일(ppt, doc, txt) 경로명(예: .\in) ‘)
    E:\WordExtractor\word_extractor.py:407: SyntaxWarning: invalid escape sequence ‘\o’
    parser.add_argument(‘–out_path’, required=True, help=’출력파일(xlsx, png) 경로명(예: .\out)’)

    get_txt_text: E:\WordExtractor\in\test.txt
    multiprocessing.pool.RemoteTraceback:
    “””
    Traceback (most recent call last):
    File “C:\ProgramData\miniconda3\envs\wordextr\Lib\multiprocessing\pool.py”, line 125, in worker
    result = (True, func(*args, **kwds))
    ^^^^^^^^^^^^^^^^^^^
    File “C:\ProgramData\miniconda3\envs\wordextr\Lib\multiprocessing\pool.py”, line 48, in mapstar
    return list(map(*args))
    ^^^^^^^^^^^^^^^^
    File “E:\WordExtractor\word_extractor.py”, line 367, in get_file_text
    df_text = get_txt_text(file_name)
    ^^^^^^^^^^^^^^^^^^^^^^^
    File “E:\WordExtractor\word_extractor.py”, line 238, in get_txt_text
    df_text = df_text.append(sr_text, ignore_index=True)
    ^^^^^^^^^^^^^^
    File “C:\ProgramData\miniconda3\envs\wordextr\Lib\site-packages\pandas\core\generic.py”, line 6204, in __getattr__
    return object.__getattribute__(self, name)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    AttributeError: ‘DataFrame’ object has no attribute ‘append’. Did you mean: ‘_append’?
    “””

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
    File “E:\WordExtractor\word_extractor.py”, line 559, in
    main()
    File “E:\WordExtractor\word_extractor.py”, line 460, in main
    mp_text_result = pool.map(get_file_text, file_list)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File “C:\ProgramData\miniconda3\envs\wordextr\Lib\multiprocessing\pool.py”, line 367, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File “C:\ProgramData\miniconda3\envs\wordextr\Lib\multiprocessing\pool.py”, line 774, in get
    raise self._value
    AttributeError: ‘DataFrame’ object has no attribute ‘append’

    (wordextr) E:\WordExtractor>

    • 아바타 사진 Zerom 댓글:

      안녕하세요, 반갑습니다.
      제가 경험하지 못한 오류라서 바로 해결방법을 알려드리기가 어렵네요.
      Python version과 numpy, pandas 버전을 확인해서 알려주시겠어요?
      version이 달라서 확인이 필요할것 같네요.

      참고로, 제가 구현하고 테스트한 환경의 version은 다음과 같습니다.
      – Python: 3.9.6 (확인 방법: python –version)
      – numpy: 1.20.3 (확인 방법: pip list) (아래 pandas도 한번에 확인할 수 있음)
      – pandas: 1.3.1

    • 아바타 사진 서희경 댓글:

      저도 같은 에러가 났었는데요. 공유해주신 패키지들 버전 맞춰서 실행했더니 성공했습니다

  2. 아바타 사진 서희경 댓글:

    안녕하세요. 아나콘다 설치와 관련하여 질의있습니다. 회사 내부에서 단어추출도구를 사용해보고 싶은데, 아나콘다가 유료화되어 회사에서는 miniforge사용을 권장하고 있습니다. miniforge 설치 후 단어추출도구 사용해도 기능에는 차이가 없을까요?

    • 아바타 사진 Zerom 댓글:

      제가 miniforge를 사용해 보지 않아서 기능적인 차이가 있을지는 모르겠습니다.
      miniconda를 설치하는 목적은 package 설치 편이성 보다는 가상환경을 쉽게 만들고 관리하기 위함이었습니다.

      다음과 같이 해보세요.
      – miniconda 대신 venv 또는 virtualenv 사용 (참조: https://richwind.co.kr/193)
      – “2.5. 필요한 package 설치” 내용중 “conda install”을 “pip install”로 변경

      잘 되길 바랍니다.

      • 아바타 사진 서희경 댓글:

        일단 miniforge 설치해서 Miniforge Prompt에서 위의 과정을 수행했는데 별일 없이 되었어요.
        그리고 알려주신 ‘Microsoft Build Tools 2015 업데이트 3’는 설치가 잘되지 않아서 저는 Microsoft Build Tools 2022를 설치하고 eunjeon 받았습니다.

        이제 추출도구 사용해보고 또 피드백 드릴게요 🙂

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

ko_KR한국어