首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sys.path在哪里被替换?

sys.path在哪里被替换?
EN

Stack Overflow用户
提问于 2015-10-19 10:47:28
回答 1查看 217关注 0票数 0

有些库确实以我不希望它改变的方式改变了我的sys.path

但我找不到。受影响的virtualenv安装了许多库。

我用自己的类替换了sys.path,它改变了修改,但是这没有帮助,因为代码似乎像这样改变了sys.path

代码语言:javascript
复制
sys.path= [...] + sys.path

如何找到“邪恶”代码行及其堆栈跟踪?

相关

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-19 10:47:28

我发现了像这样的邪恶代码行。

我在sitecustomize.py中更改sys.globals‘’sys‘:

代码语言:javascript
复制
# sitecustomize.py
import sys

class AttributeIsReadonly(ValueError):
    pass

class MakeModuleAttributesReadonly(object):
    def __init__(self, module, readonly_attributes):
        self.module=module
        self.readonly_attributes=readonly_attributes

    def __setattr__(self, item, value):
        if item in ['module', 'readonly_attributes']:
            return super(MakeModuleAttributesReadonly, self).__setattr__(item, value)
        if item in self.readonly_attributes:
            raise AttributeIsReadonly('Access on attribute %r is readonly' % item)
        return setattr(self.module, item, value)

    def __getattr__(self, item):
        return getattr(self.module, item)

sys.modules['sys']=MakeModuleAttributesReadonly(sys, ['path'])

#import sys
#sys.path=sys.path # this will raise the above AttributeIsReadonly

它引发AttributeIsReadonly,我看到代码行和堆栈跟踪。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33212466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档