초경량, 초고속 분배용 파이톤

16698 단어 Python3Python

보충: 18-10-31 패키지 설치 오류에 대한 대응 방법 보충
보충: 20-11-18 오류 대응 메모
PyInstaller의 글을 별도의 Exe 파일로 작성예전에 썼어요.합니다.
하지만 이보다 더 빠르고 가벼운 방법이 있다.
embeddable pytohon으로 불리며 Windows에서 한정된 것이지만 다운로드한 압축 상태는 7MB이며, 해동 후에도 14MB 정도의 파이토존 실행 환경에 불과하다.
물론 이렇게 하면 포장을 사용할 수 없기 때문에 그 포장의 도입 방법과 결합하여 함께 기재한다.
공식.
3. Windows에서 Python - Python 3.6.4 문서 사용

다운로드


Python Releases for Windows | Python.org
위 페이지에서 Windows x86-64embeddable zip file 동결해제를 다운로드합니다.
또는 Windows PowerShell에서 다음을 수행합니다.(wget을 사용할 수 있어 편리함)
PowerShell
# 作業用フォルダへ移動(適当なところでOK)
cd (適当なところ)
# PowerShellのwgetでファイルをダウンロード(ウィルス対策ソフトに注意)
wget "https://www.python.org/ftp/python/3.6.4/python-3.6.4-embed-amd64.zip" -O "epython_zip.zip"
# 解凍
Expand-Archive -Path epython_zip.zip -DestinationPath epython

최소 구성


pythonNN.dll、pythonNN.zip、vcruntime140.dll이 있으면 파이톤이 움직일 거예요.
python.exe는 pyhonN입니다.dll에 인자만 보내면 실행할 수 있는 파일이기 때문에 독립된 C++에서는 필요하지 않습니다.
(pythenN.zip은 압축 파일이지만 계속 사용하기 때문에 동결을 해제할 수 없습니다. 폴더 이름만 주의하면 동결을 해제해도 사용할 수 있습니다. 자세한 내용은 아래의 "오류 대응"항목을 참조하십시오)
이번에는 다른 구성 파일을 사용하려면 원형을 유지해 주십시오.

PIP


pythonNN._pth 파일을 수정합니다.


이렇게 하면get-pip.py 사용할 수 없기 때문에 약간의 수정이 필요합니다.
편집기에서 다운로드한 파일의 파일을 열기python36._pth(숫자 부분은python 버전에 따라 달라짐)
python36._pth
# import site
다음을 클릭합니다.
python36._pth
import site
및 주석입니다.
python 3.6 embed cannot get pip · Issue #7 · pypa/get-pip · GitHub
※ 파이썬 버전에 따라 아래 1줄도 python36._pth에 추가됩니다.@alphya선생님의 메시지)
./Lib/site-packages
그런 다음 https://bootstrap.pypa.io/get-pip.py 파일을 다운로드하거나 PowerShell에서 다운로드 처리를 수행합니다.
PowerShell
# 解凍したepythonの中身へ移動
cd epython
# そのままではwgetでダウンロードできないので、下記を実行(PowerShellではデフォルトでTLS1.2が非対応のため)
# 一時的にTLS1.2を有効にします(PowerShellを閉じると解除される)
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
# Wget
wget "https://bootstrap.pypa.io/get-pip.py" -O "get-pip.py"

파일 이름


위에서 설명한 바와 같이 3.6 시스템 이상의 버전이면 다운로드한 python.exe 디렉토리와 같은 디렉토리에 적절한 파일 이름.pth 확장자를 추가한 파일을 만들고 다음 내용을 기재하고 저장합니다.
import sys; sys.path.append('')

명령 프롬프트 작업


이렇게 하면 get-pip.py 사용할 수 있기 때문에 설치 작업을 진행해야 한다
이제 명령 프롬프트에서 작업을 시작합니다.PowerShell에서 모듈 오류로 인해 수행할 수 없습니다.

주의할 점

get-pip에 국한되지 않고 루트 환경에 ptyhon을 설치할 때embeddable pythhon인지 루트 환경인지 주의해야 한다.(작업 폴더에 embeddable pythhon이 있는지 여부. 또는 pip 설치 후python -m pip list 등 포장 내용을 확인하십시오.)
pip, get-pip 관련 오류가 아래의 오류 대책에 집결되었습니다
cmd
cd (embeddable pythonのフォルダ)
# 念の為、python.exeがあるディレクトリか確認。
dir
# リストの中にpython.exeがあれば、get-pipをインストール
python get-pip.py
이렇게 하면 사용할 수 있다pip.
그렇지만
cmd
# NG
# pip install numpy
# OK
python -m pip install numpy
# エラーが出る場合は以下のようにオプションをつけて実行
python -m pip --no-cache-dir install -I -U numpy
형식python -m pip install (パッケージ名).

Matplotlib 및 WxPython 시도


Matplotlib으로 도표를 그리면서 wxPython으로 그려보세요.

Package


설치 패키지는 다음과 같습니다.
cmd
python -m pip install numpy
python -m pip install matplotlib
python -m pip install wxpython

테스트 스크립트


테스트 스크립트는 다음 URL을 참조합니다.main.py의 이름으로 python.exe와 같은 층에 저장하십시오.
스크립트 참조 소스
python - Embedding a matplotlib figure inside a WxPython panel - Stack Overflow
main.py
#! env python
# -*- coding: utf-8 -*-

from numpy import arange, sin, pi
import matplotlib
matplotlib.use('WXAgg')

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.figure import Figure

import wx

class CanvasPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.figure = Figure()
        self.axes = self.figure.add_subplot(111)
        self.canvas = FigureCanvas(self, -1, self.figure)
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
        self.SetSizer(self.sizer)
        self.Fit()

    def draw(self):
        t = arange(0.0, 3.0, 0.01)
        s = sin(2 * pi * t)
        self.axes.plot(t, s)


if __name__ == "__main__":
    app = wx.PySimpleApp()
    fr = wx.Frame(None, title='test')
    panel = CanvasPanel(fr)
    panel.draw()
    fr.Show()
    app.MainLoop()

배치 파일 저장


일괄 처리 파일을 같은 레이어main.cmd의 이름으로 기록하고 저장합니다.
main.cmd
rem このファイルの位置を作業ディレクトリに
cd /d %~dp0
rem main.pyを実行
python.exe main.py
main.cmd를 실행할 때 도표를 그립니다.

용량


카탈로그 용량은 183M 정도다.
포장을 포함해 용량은 확실히 크지만 PyInstaller보다 속도가 빠르다.

오류 대응


“python setup.py egg_info” failed with error code 1

python -m pip install パッケージ名
위에서 설명한 대로 매크로 패키지를 추가하려고 하면 오류가 발생할 수 있습니다.
이 오류의 원인은 zip 파일 내의lib2 to 3 같은 포장 내용을 펼칠 수 없기 때문입니다.
대응 방법으로 삼다
1. 첨부 파일의 "PythenN.zip"이 실패할 때 백업, 복사합니다.
2. "PythenN.zip"을 폴더로 확장합니다.
3. 폴더 이름'PythenNN'에서'PythenN.zip'으로 변경합니다.
“python setup.py egg_info” failed with error code 1
https://stackoverflow.com/questions/42962765/embedded-python-3-5-python-setup-py-egg-info-failed-with-error-code-1
해결할 수 없는 상황
업그레이드를 통해 setuptols 버전을 해결할 수 있습니다.2 to 3을 지지하지 않기 때문이다.
https://qiita.com/nkmr_RL/items/85edc2ee68c01ec5582e
python -m pip install setuptools==57.4.0

ERROR: Could not install packages due to an OSError: .....


이쪽 기사에 대책이 쓰여 있다.

Python.h pythonNN.lib

Python.hが見つかりません, 'python37.lib' を開くことができません。 등의 오류가 발생하면 python -m pip install .... 명령을 실행하기 전에 다음 명령을 사용하여 이 파일을 포함하는 경로를 추가합니다.
또 이런 오류는 때때로 컴파일러가 필요하다. Visual Studio 또는build tools를 설치합니다.
예를 들어, Anaconda 및 Miniconda가 설치된 경우 다음과 같습니다.(예: Miniconda)
SET INCLUDE=C:\ProgramData\Miniconda3\include;%INCLUDE%
SET LIB=C:\ProgramData\Miniconda3\libs;%LIB%

ModuleNotFoundError: No module named XXX


같은 층에py 파일이 존재하고 import을 시도하는 중 오류가 발생하면, 이 발생 위치에 다음 스크립트를 추가합니다.
sys.path.append(os.path.dirname(os.path.abspath(sys.argv[0])))
공식.
1. Python을 다른 응용 프로그램에 포함 - Python 3.6.4 문서
Pythhon/C API 참조 안내서 - Python 3.6.4 문서

좋은 웹페이지 즐겨찾기