python 的 -S 选项由文档定义为“禁用模块站点的导入和它所需要的 sys.path 的站点相关操作”。当我使用此选项时,我发现我机器上的 python 启动速度是原来的两倍多,有时快得多。例如,在一台(慢速)机器上:
$ time python -c 'print "hello"'
hello
python -c 'print "hello"' 0.14s user 0.03s system 85% cpu 0.204 total
$ time python -Sc 'print "hello"'
hello
python -Sc 'print "hello"' 0.02s user 0.01s system 73% cpu 0.038 total
这是 5.3 倍的加速。它似乎工作正常,至少对于我试过的脚本来说是这样。使用它有什么缺点?
最佳答案
这可能不是一个好主意。除此之外,这意味着 site-packages 目录不会被添加到路径中,因此除了标准的 lib 模块之外,您将无法导入任何东西:
python -Sc "import numpy"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named numpy
您可以自己查看 site.py
以了解它在做什么。它只是常规库目录中的一个模块。至少在我的系统上,它看起来主要做了四件事情:
- 设置站点包路径
- 设置默认编码
- 定义了一些交互使用的辅助函数(
quit
和help
) - 设置用户特定的网站定制
如上所述,第一个可能是最关键的。第二个对于根据系统的区域设置执行字符串 I/O 可能很重要(即,如果默认编码设置不正确,您可能会出错)。第三个可能没那么重要。如果您希望对每个用户的路径进行自定义(让用户拥有自己的个人图书馆目录等),最后一个可能很重要。
关于python - 使用 python 的 -S 选项安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11318028/