gpt4 book ai didi

python - 调试 sys.path 的修改

转载 作者:行者123 更新时间:2023-11-28 20:21:14 25 4
gpt4 key购买 nike

某些库似乎修改了我的 sys.path,尽管我不想更改它。

如何找到改变 sys.path 的 python 代码行?

相关

最佳答案

首先导入的是 sitecustomizeusercustomize 模块;您可以将 sys.path 替换为记录所有更改的自定义列表实现。

首先,找到放置usercustomizesitecustomize 模块的位置; site module可以告诉你在哪里放置第一个:

python -m site --user-site

如果该目录尚不存在,请创建它并在其中放置一个 usercustomize.py 并包含:

import sys

class VerboseSysPath(list):
def croak(self, action, args):
frame = sys._getframe(2)
print('sys.path.{}{} from {}:{}'.format(
action, args, frame.f_code.co_filename, frame.f_lineno))

def insert(self, *args):
self.croak('insert', args)
return super().insert(*args)

def append(self, *args):
self.croak('append', args)
return super().append(*args)

def extend(self, *args):
self.croak('extend', args)
return super().extend(*args)

def pop(self, *args):
self.croak('pop', args)
return super().pop(*args)

def remove(self, *args):
self.croak('remove', args)
return super().remove(*args)

def __delitem__(self, *args):
self.croak('__delitem__', args)
return super().__delitem__(*args)

def __setitem__(self, *args):
self.croak('__setitem__', args)
return super().__setitem__(*args)

sys.path = VerboseSysPath(sys.path)

现在这将提示所有更改 sys.path 列表的尝试。

Demo,将以上内容放在 site-packages/sitecustomize.py`python -m site --user-site`/usercustomize.py 模块中:

$ cat test.py 
import sys

sys.path.append('')
$ bin/python test.py
sys.path.append('',) from test.py:3

关于python - 调试 sys.path 的修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28432910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com