[英]How to speed up python scripts on OpenWrt (embedded Linux) (missing pyc)
[英]Python ValueError with two pyc scripts
我有两个 Python 脚本,我们称它们为parent.py
和child.py
。 parent.py
从child.py
继承代码。
我想对普通观众(我的观众)混淆代码,所以我将它们都编码为pyc
文件,然后将扩展名改回.py
。 但是,每当我运行parent.py
时,它都会显示ValueError: source code string cannot contain null bytes
。
我可以通过将child.py
更改为child.pyc
来修复此错误,但是,我宁愿将所有文件保留为.py
。 有谁知道我将如何解决这个问题?
您可以将'.py'
扩展名从importlib.machinery.SOURCE_SUFFIXES
到importlib.machinery.BYTECODE_SUFFIXES
。 这将不允许您直接从带有.py
扩展名的 python 运行parent
字节码。 相反,您可以编写一个包含 python 代码的小型驱动程序,该代码不会提示您的脚本内容:
from importlib.machinery import SourcelessFileLoader, SOURCE_SUFFIXES, BYTECODE_SUFFIXES
from importlib.util import spec_from_loader, module_from_spec
from os.path import abspath, dirname, join
SOURCE_SUFFIXES.remove('.py')
BYTECODE_SUFFIXES.append('.py')
path = dirname(abspath(__file__))
loader = SourcelessFileLoader('__main__', join(path, 'parent.py'))
spec = spec_from_loader(loader.name, loader)
script = module_from_spec(spec)
loader.exec_module(script)
您可以直接调用此驱动程序脚本,假设它与您的字节码位于同一文件夹中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.