python - 使用 python 的 -S 选项安全吗?

标签 python

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 以了解它在做什么。它只是常规库目录中的一个模块。至少在我的系统上,它看起来主要做了四件事情:

  • 设置站点包路径
  • 设置默认编码
  • 定义了一些交互使用的辅助函数(quithelp)
  • 设置用户特定的网站定制

如上所述,第一个可能是最关键的。第二个对于根据系统的区域设置执行字符串 I/O 可能很重要(即,如果默认编码设置不正确,您可能会出错)。第三个可能没那么重要。如果您希望对每个用户的路径进行自定义(让用户拥有自己的个人图书馆目录等),最后一个可能很重要。

关于python - 使用 python 的 -S 选项安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11318028/

相关文章:

python 字典排序奇怪(想要非字母顺序)

python - 跨多个 setup.py 脚本共享代码的最佳方式?

python - 为什么同一个类的不同对象的方法有相同的id?

python - python 中的最佳返回类型策略

python - 打印字典 (JSON) 人类可读

python 3 url从文件和列表连接

python - 如何在 Python 中替换字符串中的字符?

python - 为 PyTorch reshape 图像

python - 在python多处理中实现Ctrl+C取消

python - 如何使用参数 Python 执行文件?