来自文档:
site.ENABLE_USER_SITE标记显示用户site-packages目录的状态.
True意味着它已启用并已添加到sys.path.False表示已被用户请求(带-s或PYTHONNOUSERSITE)禁用.无表示由于安全原因(用户或组ID与有效ID不匹配)或管理员而被禁用.
我对这句话或管理员特别感兴趣.在我是管理员(即我自己的)的机器上,如何针对特定的解释器可执行文件全局禁用此选项?
我想这样做的原因是新的conda环境启用了这个:https://github.com/conda/conda/issues/448
小智 8
基本上你可以添加环境变量PYTHONNOUSERSITE=1(只需将其设置为某个值)
因此,如果需要全局更改它,请将其添加到.bashrc或您使用的任何内容中。
对于康达:
您可以指定将为特定环境设置的变量,请参阅 简短的链接:
conda env config vars set PYTHONNOUSERSITE=1
Run Code Online (Sandbox Code Playgroud)
然后重新激活你的环境
该变量的值完全由Python代码确定:
def check_enableusersite():
"""Check if user site directory is safe for inclusion
The function tests for the command line flag (including environment var),
process uid/gid equal to effective uid/gid.
None: Disabled for security reasons
False: Disabled by user (command line option)
True: Safe and enabled
"""
if sys.flags.no_user_site:
return False
if hasattr(os, "getuid") and hasattr(os, "geteuid"):
# check process uid == effective uid
if os.geteuid() != os.getuid():
return None
if hasattr(os, "getgid") and hasattr(os, "getegid"):
# check process gid == effective gid
if os.getegid() != os.getgid():
return None
return True
Run Code Online (Sandbox Code Playgroud)
第一个测试仅适用于已使用的-s开关或PYTHONNOUSERSITE环境变量.
None如果有效用户标识或组标识与进程用户标识或组标识不同,则返回的测试仍然存在.
管理员可以设置有效用户ID或组ID位,此时可执行文件的有效用户将更改为可执行文件的所有者或组,而不是执行Python的用户,此时将返回上述函数None.
除此之外,sitecustomize.py包可以None再次设置值,并再次从路径中显式删除用户目录.如果是,usercustomize.py则跳过导入步骤.