Does pyinstaller have any parameters like gcc -static?

守給你的承諾、 提交于 2020-08-03 06:18:14

问题


I have a similar question to this : Is there a way to compile a Python program to binary and use it with a Scratch Dockerfile?

In this page, I saw that someone said that a C application runs well when compiled with -static.

So I have a new question: does pyinstaller have any parameters like gcc -static to make a python application run well in a Scratch Docker image?


回答1:


The -F and --onefile parameters should do what you are looking to do. You'll likely want to take a look at your specs file and tweak accordingly.

Using --onefile will compile it into (you guessed it) one file. And you can include binaries with --add-binary parameter.

These pages in the docs may have some useful details on all of the parameters: https://pyinstaller.readthedocs.io/en/stable/spec-files.html#adding-binary-files https://pyinstaller.readthedocs.io/en/stable/usage.html




回答2:


From the question Docker Minimal Image PyInstaller Binary File?'s commands,I get the links about how to make python binary to static,which like the go application demo,say hello world in scratch.

And I do a single ,easy demo,app.py:

print("test")

Then,do docker build with the Dockerfile:

FROM bigpangl/python:3.6-slim AS complier
WORKDIR /app
COPY app.py ./app.py

RUN apt-get update \
    && apt-get install -y build-essential patchelf \
    && pip install staticx pyinstaller \ 
    && pyinstaller -F app.py \
    && staticx /app/dist/app  /tu2k1ed

FROM scratch
WORKDIR /
COPY --from=complier /tu2k1ed /
COPY --from=complier /tmp /tmp
CMD ["/tu2k1ed"]

Get the image below, just 7.22M(I am not sure if could see the pic):

Try to run by code docker run test,successfully:

PS:

With my tests

  • the CMD must write by ['xxx'] not xxx direct.

  • /tmp directory is required in the demo.

  • other python application not test ,jsut the demo codes about print



来源:https://stackoverflow.com/questions/62951276/does-pyinstaller-have-any-parameters-like-gcc-static

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!