python打包脚本(库也一起打包),直接在windows、linux环境运行,不需要安装库

方案一: 用Docker,可以自己制作一个装有Python3的环境,一个例子Dockerfile:

FROM ubuntu:latest

MAINTAINER user

ENV TIME_ZONE Asia/Shanghai

ENV APP_USER="root" \

APP_HOME="/opt" \

COPY ./conf/sources.list /etc/apt/sources.list

COPY ./python3_pkg.txt /tmp

RUN Deps='python3-pip tzdata net-tools ' \

&& export DEBIAN_FRONTEND=noninteractive \

&& apt-get clean \

&& apt-get update \

&& apt-get install -y $Deps \

#设置时区

&& echo "${TIME_ZONE}" > /etc/timezone \

&& ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime \

#安装python3包

&& pip3 install -r /tmp/python3_pkg.txt \

&& rm /tmp/python3_pkg.txt \

&& rm -rf /var/lib/apt/lists/* \

&& rm -rf /root/.cache

 

EXPOSE 80/tcp

ENV LANG C.UTF-8

ENV LC_ALL C.UTF-8

COPY ./entrypoint.sh /sbin/entrypoint.sh

VOLUME ["/var/log","${APP_HOME}"]

ENTRYPOINT ["/sbin/entrypoint.sh"]

CMD ["app:start"]

这是我们实际项目的一个Dockerfile(有删减).

把需要安装的Python库名字,放到一个python3_pkg.txt文件里面

例如:

arrow

pycrypto==2.6.1

aliyun-python-sdk-core-v3

tornado

然后,可以把你运行的Python代码影射进去,这样就得到一个带有库的通用Python环境,这个Docker 容器可以在Linux、MacOSX、Windows下得到一样的运行环境。直接分发,打包好了,不在需要用户安装任何东西,除了Docker。目前我们自己写的Python都是这样部署的,客户只要安装了Docker,其他都不用做了。

 

方案2:用cython,可以把你的代码编译成一个linux下面的可执行文件,可以把第三方库都打包进去,最后只有一个文件,类似windows上面的EXE, 唯一需要依赖的是Python的so.如:libpython3.6m.so. 具体怎么做搜cython吧。很容易使用。

 

方案1和方案2还可以结合使用,我们实际项目里是这样的,既解决了打包问题还一定程度上加密了代码。

posted @ 2024-04-01 15:22  小明123_123  阅读(215)  评论(0)    收藏  举报