![](/img/trans.png)
[英]How to run a Python package with PyPy2 that only consist out of pyc files?
[英]PyPy doesn't find a module made of only *.pyc files
根据我客户的要求,我需要分发一个仅包含* .pyc文件的封闭源python程序,并且必须通过pypy运行。
该程序有一个子目录,其中导入了各种模块:
start.pyc
backends/
server.pyc
...
start.py的第一行将导入backends.server,并且在标准“ python”模式下运行时可以运行。 但是,如果我剥离所有* .py文件,并尝试运行
(pypy)home@user:~ python start.pyc
Traceback (most recent call last):
File "./start.py", line 4, in <module>
ImportError: No module named backends.server
我收到一条错误消息,即使找到“ backends”子目录,并且没有server.pyc文件,也找不到名为“ backends”的模块。
我记得确实有一个针对pypy的开关,但是我似乎再也找不到了。 有什么帮助吗?
PS:这是我们在嵌入式ARM系统上使用的pypy / python版本。
Python 2.7.10 (c95650101a99, Sep 06 2016, 11:02:19)
[PyPy 5.4.1 with GCC 4.7.2 20120731 (prerelease)]
这是启用加载单独的.pyc文件的方法(大多数未经测试,但应该可以运行)。 您需要使用以下方法从源中翻译pypy:
cd pypy/goal
./rpython -Ojit targetpypystandalone.py --objspace-lonepycfiles
如果目标是混淆,那么您还可以编写自己的导入钩子,并从自己的自定义文件格式加载模块(然后以标准PyPy运行)。
最后,我不确定,但是我认为仍然可以从.zip文件中找到并加载.pyc文件。 因此,如果您将应用程序的.pyc文件打包为.zip文件,并使.zip文件可用于常规导入机制(我认为这意味着将.zip文件本身的路径添加到sys.path中),那么它应该可以在也是标准的PyPy。
通常适用于将.pyc文件反向工程回.py文件的便利性的注释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.