파이썬으로 웹 API를 EXE화
4018 단어 PyInstaller파이썬Python3Flask
소개
때때로 아래의 모든 것을 충족하고 싶다는 요청을받을 수 있습니다.
여러 가지 방법이 있다고 생각하지만,
이번에는 다음을 사용합니다.
(덧붙여서 FastAPI × uvicorn라면, 2020/3/30 시점에서는 문제가 있었습니다. htps : // 기주 b. 코 m / 핏 s t r / 핏 s t r / 푸 l / 4664 )
절차
Flask와 PyInstaller를 설치합니다.
명령 프롬프트 등에서
pip install flask pyinstaller
웹 API를 게시하는 Python 파일을 만듭니다.
main.py
from flask import Flask
app = Flask(__name__)
@app.route('/predict')
def predict():
"""
AIによる予測を返すAPIのつもり
"""
return {'result': 'Prediction by AI.'}
if __name__ == '__main__':
app.run()
위 파일이 있는 디렉토리로 이동하여
pyinstaller main.py --onefile
dist
디렉토리에 main.exe
가 되어 있으므로, 시험에 실행해 봅니다.dist\main.exe
Traceback (most recent call last):
File "site-packages\PyInstaller\loader\rthooks\pyi_rth_pkgres.py", line 13, in <module>
File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\pkg_resources\__init__.py", line 86, in <module>
ModuleNotFoundError: No module named 'pkg_resources.py2_warn'
[24508] Failed to execute script pyi_rth_pkgres
위와 같이,
ModuleNotFoundError
가 되는 경우는, main.py
와 같은 계층에 생성된 main.spec
파일을 텍스트 에디터로 편집합니다.구체적으로는
hiddenimports
에 없었던 모듈명을 포함합니다.main.spec
# -- 略 --
hiddenimports=[],
# -- 略 --
↓ 다음과 같이 수정하여 저장.
main.spec
# -- 略 --
hiddenimports=['pkg_resources.py2_warn'],
# -- 略 --
py 파일이 아닌 수정된 spec 파일을 지정하여 pyinstaller를 실행합니다.
pyinstaller main.spec --onefile
다시 동작 확인합니다.
dist\main.exe
방문해 보면 웹 API가 공개되었는지 확인할 수 있습니다.
실제로 C# 등의 앱에서 이 EXE를 실행하고(요소 프로세스 관리), 친숙한 앱에서 Http 클라이언트로 액세스하게 됩니다.
Reference
이 문제에 관하여(파이썬으로 웹 API를 EXE화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shindooo/items/37cd1a417584a18cdd95텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)