使用.pyc来加密python代码
传统的python打包工具(例如wheel),是将python代码打入一个压缩包(例如.tar.gz),并改名为.whl。安装时解包,然后源码会放在site-package下面,这样对于某些需要python代码保密的场合不适用。.
当遇到源码需要保密的场合,可以考虑通过.pyc代替.py来提供服务。
下面的简单的步骤说明:
- 生成.pyc
使用py_compile来生成pyc文件。假如import 生成的pyc文件失败,则将文件名改为模块名。然后删除所有的py文件
参考资料:https://zhuanlan.zhihu.com/p/344040942 - 在项目根目录同级的目录创建一个setup.py,内容包括
from setuptools import setup,find_packages
import sysimport compileall# Compile all the .py files under my_proj/m1.
# The pyc files get created in the same directory alongside the py file
compileall.compile_dir('dir')# Not including the m1 directory in the packages, but including pyc patterns in
# package_data
setup(name='my-pyapp',version='0.0.1',packages=find_packages(),package_data={'': ['dir/*.pyc'],},
)
这里通过package_data来引入.pyc
参考资料:https://gist.github.com/raghavan97/9e1e6fadc838978666fd47a08c90ba95
3. 执行
pip install wheel
python setup.py bdist_wheel
来创建wheel包。
注意可以通过在与setup.py 同级的目录下创建一个MANIFEST.in,在文件内可以设置项目需要包含的非.py文件,规则如下:
目前遇到的问题:.pyc导入后,可以实现import,但是import完的对象的方法无法访问,报错信息如下:
AttributeError: module 'xxx' has no attribute x'
使用.pyc来加密python代码相关推荐
- 加密Python代码的5种方法
Python越来越热门了,2022年1月编程语言排行榜上挤进第一. Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Python也有一些不可掩盖的缺点,版本不兼容,运行 ...
- 使用cython加密python代码
test.py如下: list2 = [4,3,2,1] list3 = sorted(list2) print list2 加密方法: cython test.py --embed 加密后的结果: ...
- Cpython加密python代码
import os import shutil from distutils.core import setup from distutils.command.build_ext import bui ...
- python代码如何加密
Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等. 其中一个缺点,让不少开发者头疼不已,由于Python ...
- Python代码加密混淆
python作为一种解释型语言,源代码加密本身比较困难.但有时候我们在发布一款python产品时又必须考虑到代码的加密性,以避免源代码泄露.为此,我查阅了一些资料,研究了几种python代码加密的常见 ...
- Python 代码混淆和加密技术
动机 Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. ...
- python代码加密 混淆_Python程序的混淆和加密
混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. 如果你觉得有用, 可以购买离线版本. 同时需要注意的是, 这个混淆其实还是被很多人怀疑的, 因为即使混淆了 ...
- python代码加密cython_利用Cython加密python脚本
由于 Python 的动态特性和开源特点,导致 Python 代码很难做到很好的加密.社区中的一些声音认为这样的限制是事实,应该通过法律手段而不是加密源码达到商业保护的目的:而还有一些声音则是不论如何 ...
- python代码使用cython进行加密
python代码加密 前言 加密的多种方式 Cython加密 步骤 注意 部署 前言 加密的多种方式 发布编译过的pyc文件 缺点:很容易被反编译 PyInstaller 是一个用来将 Python ...
最新文章
- springboot文字转语音(jacob)
- 如何检测链表中的循环?
- SameSite Cookie,防止 CSRF 攻击
- Yslow on Nodejs server
- 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 )
- 入门Java开发,这三大知识体系你要知道
- Lucene分类统计示例
- Java持久性锁定初学者指南
- java 手机网站 cookie操作_java操作cookie问题
- linux 内核配置过程中遇到的问题
- Linux中软件安装使用的命令是,Linux软件安装命令
- 4个人的学校(转载)
- C++, “包含类的头文件”还是“对类进行前置声明”?
- rhel5编译安装2.6.29.2内核
- 一文搞懂无刷电机和有刷电机
- 微信好友只有昵称没有微信号_只知道昵称怎么查他的微信号
- 二.微信小程序代码的构成
- mac安装虚拟机VMware fusion12 和ubantu系统
- css 上中下三行布局 4种方式
- 制作openstack镜像(qcow2格式的win10系统)
热门文章
- Tomcat的JVM配置:解决Out of memory:java head space
- T8服务器怎么重装系统,美图 T8手机如何重装系统、手机系统怎样重装?
- 渲染图片纹理与原图不一致的原因
- Navicat连接远程mysql 1045 Access denied for user ‘root‘@‘localhost‘ (using password: YES)
- cpu的外频,内频,超频
- yii2 mysql where in_Yii2查询之where条件拼装
- Java 缓存设置
- Java:矩阵的相加
- 4314: 猴子吃桃子
- vue使用高德地图获取经纬度信息