我有一组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"
类似的东西