首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止python加载pth文件

防止python加载pth文件
EN

Stack Overflow用户
提问于 2014-09-07 13:32:38
回答 2查看 1.1K关注 0票数 3

我的情况如下:

  • 我有一个本地安装的python版本。还有一个全局的,安装不好,我不想使用。(我没有管理私密)
  • /usr/local/lib/site-packages上有一个x.pth文件,其中包含错误安装numpy的路径。
  • 我的PYTHONPATH没有任何这样的路径。但是,一些管理员生成的脚本将/usr/local/usr/local/bin添加到我的路径中(这是一个假设,而不是已知的事实)。
  • 这在某种程度上导致了我的sys.path中添加了错误的numpy路径。当我运行python -S时,它不在那里。
  • site.PREFIXES不包括/usr/local。我不知道为什么加载前面提到的pth文件。
  • 我尝试将自己的pth文件添加到本地安装的站点包dir中,执行import sys; sys.path.remove('pth/to/faulty/numpy')失败,因为当加载pth文件时,sys.path中还没有错误的路径。

是否有一种方法可以禁用上述pth文件的加载,或者在加载python之前从sys.path中删除路径?

我尝试过建立虚拟环境,但它不适合我目前的情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-07 21:20:34

我终于设法解决了这个问题--我的站点包库有一个easy_install.pth文件,因为某种原因包含了错误的numpy,而不是/usr/local/lib/site-packages上的x.pth文件。

在我花了很多时间在这个问题上之后,如果有其他人来到这里,我会分享一些我学到的东西:

  • 如果您在本地安装了python,默认情况下,将不会在'/usr/local/lib‘中搜索。如果您想知道它在哪里搜索,请运行: 进口站点打印site.PREFIXES python在这里搜索路径+ lib/python2.X/site-packages。它描述了这里
  • 根据这些文档,您实际上可以使用您的sys.path。如果将usercustomize模块添加到本地站点包(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#这是您的代码运行/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 #注意:这是第二次运行
  • 一旦我有一个pth文件,我错过了在网站包,我不能用一个usercustomize修复它,因为那个pth文件有机会再运行一次之后!
票数 3
EN

Stack Overflow用户

发布于 2014-09-07 13:58:04

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

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

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

https://stackoverflow.com/questions/25710724

复制
相关文章

相似问题

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