防止python加载pth文件

防止python加载pth文件,python,python-2.7,sys.path,Python,Python 2.7,Sys.path,我的情况如下: 我有一个本地安装的python版本。还有一个全局的,安装不好,我不想使用。(我没有管理权限) 在/usr/local/lib/site软件包上有一个x.pth文件,其中包含错误安装numpy的路径 我的蟒蛇路径没有这些路径。但是,一些管理员生成的脚本将/usr/local和/usr/local/bin添加到我的路径中(这是一个假设,不是已知的事实) 这以某种方式导致错误的numpy路径添加到mysys.path。当我运行python-S时,它不在那里 站点。前缀不包括/usr/

我的情况如下:

  • 我有一个本地安装的python版本。还有一个全局的,安装不好,我不想使用。(我没有管理权限)
  • /usr/local/lib/site软件包上
    有一个
    x.pth
    文件,其中包含错误安装numpy的路径
  • 我的蟒蛇路径没有这些路径。但是,一些管理员生成的脚本将
    /usr/local
    /usr/local/bin
    添加到我的路径中(这是一个假设,不是已知的事实)
  • 这以某种方式导致错误的numpy路径添加到my
    sys.path
    。当我运行
    python-S
    时,它不在那里
  • 站点。前缀不包括
    /usr/local
    。我不知道为什么要加载前面提到的pth文件
  • 我尝试将自己的pth文件添加到本地安装的site packages目录中,执行
    import sys;sys.path.remove('pth/to/failure/numpy')
    此操作失败,因为加载该pth文件时,故障路径尚未在sys.path中
我有没有办法禁用加载所述pth文件,或者在加载python之前从sys.path中删除路径

我已尝试设置virtualenv,但它不适合我当前的情况。

无法删除pth文件。 标准python将在
/usr/lib
/usr/local/lib
中搜索pth文件


不过,您可以通过viartualenv创建独立的python。

我终于设法解决了这个问题-我的站点软件包库有一个
easy\u install.pth
文件,由于某些原因,该文件包含错误的numpy,而不是
/usr/local/lib/site packages
上的x.pth文件

在我花了大量的时间之后,如果有人来到这里,我将与大家分享我学到的一些东西:

  • 如果您在本地安装了python,默认情况下它将不会在'/usr/local/lib'中搜索。如果您想知道它在哪里搜索,请运行:

    import site
    print site.PREFIXES
    
    python在这里搜索路径+
    lib/python2.X/site-packages
    。它被描述了

  • 根据这些文档,您实际上可以使用sys.path。如果将
    usercustomize
    模块添加到本地sitepackages(
    import site;site.getusersitepackages()
    ),将运行该模块。然而,我花了很长时间才意识到这一点——它发生在python处理位于站点包中的
    pth
    文件之后,以及再次处理它们之前。如果我向执行此操作的方法(lib/site.py addsitedir)添加一条print语句,它将打印以下内容:

    /home/user/.local/lib/python2.7/site-packages
    /home/user/py/lib/python2.7/site-packages
    #This is where your code runs
    /home/user/py/lib/python2.7/site-packages/numpy-1.9.0-py2.7-linux-x86_64.egg
    /home/user/Develop/Python/myproject
    /home/user/lmfit-0.7.2
    /home/user/py/lib/python2.7/site-packages #NOTE: this runs a second time
    
  • 一旦我有了一个在网站包中丢失的pth文件,我就无法用
    usercustomize
    来修复它,因为该pth文件有机会在以后再运行一次


我从未说过要删除它。关于搜索位置-这不是文档中所说的-您有参考资料吗?如果您说无法忽略所述pth文件,那么在加载之前是否有一个方法可以从sys.path中删除path?作为旁注,恭敬地回答“您不能,但我建议做您特别说过不想做的事情”,这不是很有成效。