- 기본 python 환경과 별도로 사용할 수 있는 가상 환경 제공
- 원하는 python 버전을 설정하여 사용
- 해당 가상 환경만을 위한 python library 를 설치
- Pipfile, Pipfile.lock (pip 설정 파일) 을 기반으로 python library 일괄 설치
- pyinstaller 사용하여 변환시 꼭 필요한 library 만으로 최적화 변환 :
pipenv 없이 pyinstaller로 exe 실행 환경 생성할 경우 기본 python 환경에서 수행시 설치된 python library 를 기준으로 생성하기 때문에 불필요한 library 들로 인해 변환 용량이 커짐. pipenv 를 사용하여 필요한 library 만 설치한 환경 이용시 최적화하여 변환 가능.
pipenv Github : https://github.com/pypa/pipenv
pipenv pypi : https://pypi.org/project/pipenv
pipenv 설치
PS D:\workspace\cef-pywebview> pip install pipenv
Collecting pipenv
..........
Installing collected packages: six, filelock, distlib, appdirs, virtualenv-clone, virtualenv, certifi, pipenv
Successfully installed appdirs-1.4.4 certifi-2021.5.30 distlib-0.3.2 filelock-3.0.12 pipenv-2021.5.29 six-1.16.0 virtualenv-20.4.7 virtualenv-clone-0.5.4
pipenv 는 pip를 이용하여 설치하고 설치시 의존성을 가진 관련 library 들 또한 같이 설치 된다.
가상 환경에서 사용할 python 설정
PS D:\workspace\cef-pywebview> pipenv --python 3.8
Creating a virtualenv for this project...
Pipfile: D:\workspace\cef-pywebview\Pipfile
Using D:/Python38/python.exe (3.8.10) to create virtualenv...
[= ] Creating virtual environment...created virtual environment CPython3.8.10.final.0-64 in 4713ms
creator CPython3Windows(dest=C:\Users\User\.virtualenvs\cef-pywebview-wVQHrn4L, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\User\AppData\Local\pypa\virtualenv)
added seed packages: pip==21.1.2, setuptools==57.0.0, wheel==0.36.2
activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
Successfully created virtual environment!
Virtualenv location: C:\Users\User\.virtualenvs\cef-pywebview-wVQHrn4L
Creating a Pipfile for this project...
가상 환경을 구축할 project 로 경로를 이동한 뒤 pipenv --python 명령으로 사용할 python 버전을 3.8 으로 설정하면 python 3.8 기반으로 가상 환경을 생성한다. 위의 경우 기본 python 환경과 별도로 "C:\Users\User\.virtualenvs\cef-pywebview-wVQHrn4L" 에 가상 환경이 생성되었다.
PS D:\workspace\cef-pywebview> pipenv run python --version
Python 3.8.10
위 명령으로 가상환경에서의 python 버전을 확인해보면 앞서 설정한 3.8 인 것을 확인할 수 있다.
pipenv 설정 파일인 Pipfile 이 생성된다.
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
[dev-packages]
[requires]
python_version = "3.8"
가상 환경에서 사용할 python library 설치
PS D:\workspace\cef-pywebview> pipenv install pywebview
Installing pywebview...
Adding pywebview to Pipfile's [packages]...
Installation Succeeded
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
Success!
Updated Pipfile.lock (d1c8a0)!
Installing dependencies from Pipfile.lock (d1c8a0)...
================================ 0/0 - 00:00:00
예를 들어 pywebview 를 설치할 경우 pipenv install pywebview 명령을 통해 설치하게 된다. 기본 python library 와는 별도로 해당 가상 환경을 위해서만 설치한다.
C:\Users\User\.virtualenvs\cef-pywebview-wVQHrn4L\Lib\site-packages\pywebview-3.4.dist-info
가상 환경의 기본 경로 하위에 설치된 것을 확인할 수 있고, 가상 환경을 위한 설정 파일인 Pipfile 내에 pywebview 정보가 추가된 것을 확인할 수 있다.
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
pywebview = "*"
[dev-packages]
[requires]
python_version = "3.8"
현재 설치된 library 는 하기와 같이 확인 가능하다.
PS D:\workspace\cef-pywebview> pipenv graph
pipenv==2021.5.29
- certifi [required: Any, installed: 2021.5.30]
- pip [required: >=18.0, installed: 21.1.2]
- setuptools [required: >=36.2.1, installed: 57.0.0]
- virtualenv [required: Any, installed: 20.4.7]
- appdirs [required: >=1.4.3,<2, installed: 1.4.4]
- distlib [required: >=0.3.1,<1, installed: 0.3.2]
- filelock [required: >=3.0.0,<4, installed: 3.0.12]
- six [required: >=1.9.0,<2, installed: 1.16.0]
- virtualenv-clone [required: >=0.2.5, installed: 0.5.4]
pywebview==3.4
- pythonnet [required: Any, installed: 2.5.2]
- pycparser [required: Any, installed: 2.20]
가상 환경에서 python 코드 실행
print("Hello, PIPENV")
위의 내용으로 main.py 를 작성한다.
PS D:\workspace\cef-pywebview> pipenv run main.py
Hello, PIPENV
pipenv run main.py 명령을 통해 위와 같이 가상 환경 내에서 python code 가 실행되는 것을 확인할 수 있다.
가상 환경 내로 진입
PS D:\workspace\cef-pywebview> pipenv shell
Launching subshell in virtual environment...
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
새로운 크로스 플랫폼 PowerShell 사용 https://aka.ms/pscore6
PS D:\workspace\cef-pywebview>
pipenv shell 명령을 통해 가상 환경 속으로 진입할 수 있다.
PS D:\workspace\cef-pywebview> exit
PS D:\workspace\cef-pywebview>
기존 환경으로 복귀하려면 exit 를 하면 된다.
pyinstaller 를 이용한 가상 환경 python 코드 exe 변환
PS D:\workspace\cef-pywebview> pipenv run pyinstaller main.py
97 INFO: PyInstaller: 4.3
98 INFO: Python: 3.8.10
129 INFO: Platform: Windows-10-10.0.19042-SP0
130 INFO: wrote D:\workspace\cef-pywebview\main.spec
132 INFO: UPX is not available.
139 INFO: Extending PYTHONPATH with paths
['D:\\workspace\\cef-pywebview', 'D:\\workspace\\cef-pywebview']
150 INFO: checking Analysis
.....
8994 INFO: Appending archive to EXE D:\workspace\cef-pywebview\build\main\main.exe
10125 INFO: Building EXE from EXE-00.toc completed successfully.
10128 INFO: checking COLLECT
10129 INFO: Building COLLECT because COLLECT-00.toc is non existent
10129 INFO: Building COLLECT COLLECT-00.toc
10791 INFO: Building COLLECT COLLECT-00.toc completed successfully.
pipenv 를 통해 pyinstaller를 사용할 경우 가상 환경에 설치된 library 만을 사용하여 변환하기 때문에 꼭 필요한 코드들만 포함하여 exe 실행 환경으로 변환할 수 있다. (즉, 불필요하게 용량이 커지지 않는다.)
pipenv run pyinstaller main.py 와 같이 가상 환경 내에서 변환해주면 된다.
'Language > Python' 카테고리의 다른 글
[python] global - 전역 변수의 사용 (0) | 2021.09.12 |
---|---|
[pywebview] subprocess 를 이용한 pywebview 분리 실행 (0) | 2021.09.11 |
[pyinstaller] TypeError: an integer is required (got type bytes) (0) | 2021.09.11 |
[pywebview] python 을 이용한 webview (0) | 2021.09.11 |
Python - pywinauto, Microsoft Windows GUI 제어 자동화 (0) | 2020.02.29 |
Python - PyInspect 설치 및 실행 (0) | 2020.02.28 |
Python - reduce(), 인자를 누적적으로 적용하여 결과를 반환 (0) | 2020.02.23 |
Python - filter(), iterable 변수 내 값 중 조건에 맞는 값만 반환 (0) | 2020.02.22 |