pypy沙箱无法导入时间,导入网站失败

时间:2014-06-11 20:33:32

标签: python sandbox pypy

我已经运行rpython翻译来创建一个pypy沙箱。

~/pypy-2.3.1-linux64/bin/pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone

有一些警告,其中两个似乎涉及时间。

[sandbox:WARNING] Not Implemented: sandboxing for external function 'clock_gettime'
[sandbox:WARNING] Not Implemented: sandboxing for external function 'clock_getres'

它的长短是在翻译结束时,运行沙箱时会出现以下输出:

'import site' failed
Python 2.7.6 (32f35069a16d819b58c1b6efb17c44e3e53397b2, Jun 11 2014, 19:06:04)
[PyPy 2.3.1 with GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>> 

然后导入时间也失败了:

>>>> import time
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named time
>>>> 

这是沙箱的预期行为吗? 如果是这样,在沙盒流程中嵌入网站包等的正确做法是什么? 我希望使用pip安装在那个环境中,但沙盒似乎让它变得非常困难。 (当我尝试安装distribute.py时,基本上我遇到导入时间,因为它需要时间,这需要时间)

1 个答案:

答案 0 :(得分:5)

刚刚经历了同样的问题。解决方案是在构建time沙箱时包含pypy-c模块。在these instructions中,在构建时添加--withmod-time

pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone --withmod-time

此处列出了其他可能的标志:http://pypy.readthedocs.org/en/latest/config/commandline.html