繁体   English   中英

Python ValueError 与两个 pyc 脚本

[英]Python ValueError with two pyc scripts

我有两个 Python 脚本,我们称它们为parent.pychild.py parent.pychild.py继承代码。

我想对普通观众(我的观众)混淆代码,所以我将它们都编码为pyc文件,然后将扩展名改回.py 但是,每当我运行parent.py时,它都会显示ValueError: source code string cannot contain null bytes

我可以通过将child.py更改为child.pyc来修复此错误,但是,我宁愿将所有文件保留为.py 有谁知道我将如何解决这个问题?

您可以将'.py'扩展名从importlib.machinery.SOURCE_SUFFIXESimportlib.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM