传统的python打包工具(例如wheel),是将python代码打入一个压缩包(例如.tar.gz),并改名为.whl。安装时解包,然后源码会放在site-package下面,这样对于某些需要python代码保密的场合不适用。.
当遇到源码需要保密的场合,可以考虑通过.pyc代替.py来提供服务。
下面的简单的步骤说明:

  1. 生成.pyc
    使用py_compile来生成pyc文件。假如import 生成的pyc文件失败,则将文件名改为模块名。然后删除所有的py文件
    参考资料:https://zhuanlan.zhihu.com/p/344040942
  2. 在项目根目录同级的目录创建一个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代码相关推荐

  1. 加密Python代码的5种方法

    Python越来越热门了,2022年1月编程语言排行榜上挤进第一. Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Python也有一些不可掩盖的缺点,版本不兼容,运行 ...

  2. 使用cython加密python代码

    test.py如下: list2 = [4,3,2,1] list3 = sorted(list2) print list2 加密方法: cython test.py --embed 加密后的结果: ...

  3. Cpython加密python代码

    import os import shutil from distutils.core import setup from distutils.command.build_ext import bui ...

  4. python代码如何加密

    Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等. 其中一个缺点,让不少开发者头疼不已,由于Python ...

  5. Python代码加密混淆

    python作为一种解释型语言,源代码加密本身比较困难.但有时候我们在发布一款python产品时又必须考虑到代码的加密性,以避免源代码泄露.为此,我查阅了一些资料,研究了几种python代码加密的常见 ...

  6. Python 代码混淆和加密技术

    动机 Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. ...

  7. python代码加密 混淆_Python程序的混淆和加密

    混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. 如果你觉得有用, 可以购买离线版本. 同时需要注意的是, 这个混淆其实还是被很多人怀疑的, 因为即使混淆了 ...

  8. python代码加密cython_利用Cython加密python脚本

    由于 Python 的动态特性和开源特点,导致 Python 代码很难做到很好的加密.社区中的一些声音认为这样的限制是事实,应该通过法律手段而不是加密源码达到商业保护的目的:而还有一些声音则是不论如何 ...

  9. python代码使用cython进行加密

    python代码加密 前言 加密的多种方式 Cython加密 步骤 注意 部署 前言 加密的多种方式 发布编译过的pyc文件 缺点:很容易被反编译 PyInstaller 是一个用来将 Python ...

最新文章

  1. springboot文字转语音(jacob)
  2. 如何检测链表中的循环?
  3. SameSite Cookie,防止 CSRF 攻击
  4. Yslow on Nodejs server
  5. 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 )
  6. 入门Java开发,这三大知识体系你要知道
  7. Lucene分类统计示例
  8. Java持久性锁定初学者指南
  9. java 手机网站 cookie操作_java操作cookie问题
  10. linux 内核配置过程中遇到的问题
  11. Linux中软件安装使用的命令是,Linux软件安装命令
  12. 4个人的学校(转载)
  13. C++, “包含类的头文件”还是“对类进行前置声明”?
  14. rhel5编译安装2.6.29.2内核
  15. 一文搞懂无刷电机和有刷电机
  16. 微信好友只有昵称没有微信号_只知道昵称怎么查他的微信号
  17. 二.微信小程序代码的构成
  18. mac安装虚拟机VMware fusion12 和ubantu系统
  19. css 上中下三行布局 4种方式
  20. 制作openstack镜像(qcow2格式的win10系统)

热门文章

  1. Tomcat的JVM配置:解决Out of memory:java head space
  2. T8服务器怎么重装系统,美图 T8手机如何重装系统、手机系统怎样重装?
  3. 渲染图片纹理与原图不一致的原因
  4. Navicat连接远程mysql 1045 Access denied for user ‘root‘@‘localhost‘ (using password: YES)
  5. cpu的外频,内频,超频
  6. yii2 mysql where in_Yii2查询之where条件拼装
  7. Java 缓存设置
  8. Java:矩阵的相加
  9. 4314: 猴子吃桃子
  10. vue使用高德地图获取经纬度信息