冲突的Python库并永久删除sys.path [0]

时间:2018-08-04 15:36:20

标签: python python-2.7 path sys

我有一组Python 2.7库,这些库与我无法更改的某些项目共享相同的名称。

我想做的是将Python库优先于我自己项目的库。

寻找sys.path

>>> import sys
>>> from pprint import pprint as p
>>> p(sys.path)
['',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/home/deep/.local/lib/python2.7/site-packages',
 '/home/deep/cocoapi/PythonAPI/Detectron',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/local/lib/python2.7/dist-packages/pycocotools-2.0-py2.7-linux-x86_64.egg',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages']
>>> 

我看到其中的库

/usr/lib/python2.7

应该优先于我的项目

/home/deep/cocoapi/PythonAPI/Detectron'

但是它没有发生,当我运行该程序时,我得到了错误,因为它试图从我的项目而不是python的库中提取库。

如何在不对文件进行任何更改的情况下确定优先级?我不想更改名称或编辑librarie的文件。我该怎么办?

先谢谢您。

* edit 好,因此sys.path开头的空字符串将被包含执行脚本的路径填充。引用手册

  

在程序启动时初始化,此列表的第一项path [0]是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用(例如,以交互方式调用解释器或从标准输入中读取脚本),则path [0]为空字符串,该字符串将引导Python首先搜索当前目录中的模块。请注意,由于PYTHONPATH的结果,脚本目录已插入条目之前。

然后的问题是,删除path[0]将避免python首先检查当前目录吗? 严格需要在我的代码之前编辑我的文件并删除path[0]吗? 在运行脚本以清除path[0]之类的东西之前,我可以运行命令吗

python -c "import sys; sys.path.pop(0); sys.path.append(''); mypath/myscript.py -myconfig"

类似的东西

0 个答案:

没有答案