pypy 沙箱无法导入 time,导入 site 失败
我运行了 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
>>>>
这是沙盒的正常表现吗?如果是的话,应该如何在沙盒进程中正确地嵌入 site-packages 等内容?我本来希望能在这个环境中使用 pip 安装,但沙盒的设置似乎让这变得非常困难。(基本上,当我尝试安装 distribute.py 时遇到了 import time 的问题,因为它需要 datetime,而 datetime 又需要 time)
1 个回答
5
我刚遇到过同样的问题。解决办法是在构建 pypy-c
沙盒的时候,加入 time
模块。在 这些说明 中,构建时要加上 --withmod-time
:
pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone --withmod-time
其他可能的选项可以在这里找到: http://pypy.readthedocs.org/en/latest/config/commandline.html