Python PyPy不';找不到仅由*.pyc文件构成的模块

Python PyPy不';找不到仅由*.pyc文件构成的模块,python,python-2.7,arm,pypy,Python,Python 2.7,Arm,Pypy,根据我客户的请求,我需要分发一个只包含*.pyc文件的封闭源代码python程序,并且必须通过pypy运行 该程序有一个子目录,其中导入了各种模块: start.pyc backends/ server.pyc ... start.py的第一行导入backends.server,它在标准“python”模式下运行时工作。 但是如果我去掉所有的*.py文件并尝试运行 (pypy)home@user:~ python start.pyc Traceback (most recent

根据我客户的请求,我需要分发一个只包含*.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

下面是启用加载lone.pyc文件的方法(大部分未经测试,但应该可以工作)。您需要使用以下内容翻译源中的pypy:

cd pypy/goal
./rpython -Ojit targetpypystandalone.py --objspace-lonepycfiles
如果模糊处理是目标,那么您还可以编写自己的导入钩子,并从自己的自定义文件格式加载模块(然后在标准PyPy中工作)

最后,我不确定,但我认为仍然可以从.zip文件中找到并加载.pyc文件。因此,如果您将应用程序的.pyc文件打包到.zip中,并使.zip可用于正常的导入机制(我认为这意味着将.zip文件本身的路径添加到sys.path中),那么它也应该在标准pypypy中工作


关于反向工程的易用性的常见注释.pyc文件返回到.py文件适用。

.pyc
文件包含CPython字节码。PyPy有自己的内部代码表示,使得(据我所知)
.pyc
文件与PyPy不兼容。这个邮件列表上也有同样的问题:这似乎很奇怪,因为我可以从PyPyVenV启动“python-mCompileAll”并重新生成我的项目的所有*.pyc。我猜是由PyPy以兼容PyPy的方式生成的。此外,如果我使用pypy执行pyc文件,则会出现上述错误,这与pyc中应该包含的内容(即导入)是有意义和一致的,谢谢,但是使用rpython进行翻译不起作用,因为我的机器上似乎没有rpython。我记得几个月前用了一种更简单的方法。pypy无法识别命令行开关objspace lonepycfiles(无论是单破折号还是双破折号,它都被视为未知选项)。也许我调用的方式不对?这不是运行时可以给pypy的选项。如果您不想研究如何翻译自定义pypy,请尝试.zip选项。谢谢,但您能更具体一点吗?在将所有东西包装在拉链中之前,我是否应该更改进口说明中的某些内容?你还有链接吗?谢谢:如果.zip文件包含.pyc文件而不是.py文件,那么它可以在PyPy(以及CPython)上工作。
cd pypy/goal
./rpython -Ojit targetpypystandalone.py --objspace-lonepycfiles