为了账号安全,请及时绑定邮箱和手机立即绑定

如何加密PYTHON程序

标签:
Python

今天系里的数学教授老史过来问我能不能帮他解决一个教学中遇到的问题。他有一个类似于Online Judge的Python程序,打算发给学生用于自测,但为了防止学生作弊,他又不想学生看到程序源代码。所以问题是如何加密Python源代码,同时又能让学生运行他的Python程序。


我Google了一下说有个网上的软件叫做Py2exe,可以把Python程序转化为Windows下的EXE文件。但是Py2exe似乎只能做Python 2和Python 3的低级版本,Python3.4以上的程序都不能转化。老史又跟我说Python在编译过程中可以生成pyc文件,就是一个对应于源代码的二进制代码,可以发这个pyc文件给学生执行。pyc文件很容易生成:

123C:\> python>>> import py_compile>>> py_compile.compile('1.py')


我们拿到了这个pyc文件,却发现它不能双击执行,而只能在命令行下执行python 1.pyc才可以。这对使用来说很不方便。于是想到了Windows下的批处理文件,就在pyc文件的目录__pycache__里新建了一个runit.bat文件:

12@echo offpython 1.pyc

双击runit.bat,果然执行成功了。


事情到这里似乎已经解决,但是果然没有其他办法双击执行pyc文件了吗?又在网上查了其它资料,有人说可以更改windows文件扩展名的关联,从而执行某一段命令。在cmd中运行这个命令

1assoc | findstr /R /C:"pyc"

可以发现这一段信息:

1.pyc=Python.CompiledFile

也就是说pyc文件被当成了CompiledFile对待,所以系统不会使用Python 1.pyc来运行这个文件。要更改这个设置,只要运行下面的命令:

1Python.CompiledFile="C:\Python34\Python.exe" "%1" %*

就可以让pyc双击执行了。


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消