我已经运行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时,基本上我遇到导入时间,因为它需要时间,这需要时间)
答案 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