我是python和pyqt5的新手。我用python和pyqt5编写了一个简单的项目,现在我想关闭源代码以免看到我的源代码。我认为通过obfuscate
我可以做到这一点,因此我已经安装了pyminifier
。
sudo apt install python-setuptools
pip3 install pyminifier
在我的项目中,我有几节课。通过此命令,我可以obfuscate
我的项目的一个类:
pyminifier --obfuscate --gzip MainWindow.py
import zlib, base64
exec(zlib.decompress(base64.b64decode('eJytVU1v2zAMvftXaLnUGQJtl10G+NAmHbAObfPRIAWGwVBtylZrS64k56PYj59oO46dpNtlh8QW+UQ9PlI01yonS3HLhF.....
上面的输出在运行pyminifier --obfuscate
之后显示在我的终端中。
是否必须对每个类都运行此命令,并将输出代码复制到其他新文件?
如果我这样做,我认为正确导入在一起的这些类是彼此不认识的,最后应用程序将无法运行!!!我是对的吗?
编辑
我通过以下命令混淆项目的入口点:
pyminifier --obfuscate --gzip Main.py
import zlib, base64
exec(zlib.decompress(base64.b64decode('eJzLzC3ILypRKK4s5sqyBZJ6qRWZJVzuYGZiUXoZV1pRfq5CQGVgialeYEl4Zkp6akmxQiZEV6BjQUFOZnJiSWZ+HkShb2JmXnhmXkp+OUwNQgSomMvHFlmPhrsmV6UtigoNTa4sDR+gK1KTNTQ1uQAalDgb')))
# Created by pyminifier (https://github.com/liftoff/pyminifier)
然后我将此代码复制到其他file.py中,我运行应用程序,但出现错误:
python new.py
Traceback (most recent call last):
File "new.py", line 2, in <module>
exec(zlib.decompress(base64.b64decode('eJzLzC3ILypRKK4s5sqyBZJ6qRWZJVzuYGZiUXoZV1pRfq5CQGVgialeYEl4Zkp6akmxQiZEV6BjQUFOZnJiSWZ+HkShb2JmXnhmXkp+OUwNQgSomMvHFlmPhrsmV6UtigoNTa4sDR+gK1KTNTQ1uQAalDgb')))
File "<string>", line 8
j(L.exec())
^
SyntaxError: invalid syntax
答案 0 :(得分:1)
您是否正在使用Python 2运行Python 3程序?仅当您使用的是Python 2(其中exec
是关键字)时,该错误消息才有意义。
有关混淆多个文件的信息,请参见http://liftoff.github.io/pyminifier/pyminifier.html:
Pyminifier现在可以一次性缩小/混淆任意数量的Python脚本。例如,
./pyminifier.py -O *.py
将缩小并混淆当前目录中所有以.py结尾的文件。为了避免在多个文件中使用区分混淆标识符的问题,pyminifier将通过查找表跟踪替换内容的内容,以确保foo_module.what可以在所有源文件中获得相同的替换。 在版本2.0中添加