繁体   English   中英

PyPy找不到仅由* .pyc文件组成的模块

[英]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.

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