黄南州网站建设公司,微信公众号与网站绑定,谷歌seo工具,免费ppt模板下载第一pptPython代码编译并生成Docker镜像
前言
实际python项目交付时往往有针对关键代码进行保护的需求#xff0c;本文介绍了一种简单可行的方案#xff1a;1. 在Linux系统上先将 .py 文件编译为 .so 文件#xff0c;2. 将整个项目打包成Docker镜像#xff08;解决 .so 文件的环…Python代码编译并生成Docker镜像
前言
实际python项目交付时往往有针对关键代码进行保护的需求本文介绍了一种简单可行的方案1. 在Linux系统上先将 .py 文件编译为 .so 文件2. 将整个项目打包成Docker镜像解决 .so 文件的环境依赖问题。
1. 编译.py文件为.so文件
project/
├── setup.py
└── test.py # test.py
import pandas as pd def testfuc():print(Hello world!)在项目环境中安装Cython pip install cython 新建setup.py # setup.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonizeextensions [Extension(test, [test.py]), ]setup(ext_modulescythonize(extensions),
)在该目录下运行 python setup.py build_ext生成 .so 文件。然后用 .so 文件替换原来的 .py 文件即可。(中间文件如.c文件可删除) build_ext:build C/C extensions (compile/link to build directory)给python编译一个c、c的拓展 –inplace:ignore build-lib and put compiled extensions into the source directory alongside your pure Python modules忽略build-lib将编译后的扩展放到源目录中与纯Python模块放在一起 参考链接 python 源代码保护 之 xx.py - xx.so - TonyZhang24 - 博客园python代码一键加密为so或pyd: jmpy库批量打包某目录下所有的python文件 GitHub - ArvinMei/py2so: 编译py为so文件更好的隐藏源码 2. 生成Docker镜像
目录结构
project/
├── Dockerfile
├── requirements.txt
└── .so文件 (test.cpython-39-x86_64-linux-gnu.so)编写dockerfile文件 这里使用了编译后的load_data.py为例 # 使用官方 Python 镜像作为基础镜像
FROM python:3.9
# 设置工作目录
WORKDIR /app
# 复制当前目录下的所有文件到工作目录
COPY . /app
# 安装项目依赖
RUN pip install --no-cache-dir -r requirements.txt
# 设置环境变量
ENV PYTHONUNBUFFERED 1 构建Docker镜像 docker build -t test . 运行Docker容器docker run -it --rm test测试 from test import testfuc -it 参数表示在交互模式下运行容器--rm 参数表示容器退出后立即删除