首页 > 解决方案 > 尽管修改了 sys.path 标准库包仍然可以导入

问题描述

假设我想让标准库中的包不可导入。所以“datetime”、“collections”等在运行时不应该是可导入的import datetime

我没有这方面的用例,但实现这一点将帮助我了解 Python 是如何解析包的。

我试过这样做:

import sys
sys.path = []
sys.prefix = ''
sys.exec_prefix = ''

但尽管如此,当我运行时import datetime,找到了包(它位于 Ubuntu 上的 /usr/lib/python3.6 目录中)。

我还尝试使用 Python 启动python3.6 -S -s以避免自动加载 site.py,但这也没有帮助。

我的猜测是 Ubuntu 提供的 Python 解释器的路径是/usr/lib/pythonX.Y硬编码的,但我无法通过广泛的互联网搜索来确认这一点。

那么 Python 是如何知道它应该在/usr/lib/pythonX.Y/目录中查找的呢?

标签: python

解决方案


推荐阅读