Python项目不会根据sys.path顺序选择依赖项

时间:2018-11-27 07:57:40

标签: python python-2.7 pip dependencies

我正在使用pip和python 2.7升级项目中的依赖项。全局python的依赖项版本较低,为了避免与全局sdks发生冲突,我正在使用--user选项运行pip install。

我正在目录pip install --user -r requirements.txt中运行命令workspace/myproject。此目录也是我的PYTHONUSERBASE 该项目无法使用升级的版本并退出。 这是python -m site命令的结果

sys.path = [
'workspace/myproject',
'/usr/local/lib/python2.7/site-packages/pip-9.0.1- 
py2.7.egg',
'/usr/local/lib/python27.zip',
'/usr/local/lib/python2.7',
'/usr/local/lib/python2.7/plat-linux2',
'/usr/local/lib/python2.7/lib-tk',
'/usr/local/lib/python2.7/lib-old',
'/usr/local/lib/python2.7/lib-dynload',
'workspace/myproject/_pip/lib/python2.7/site- 
 packages',
'/usr/local/lib/python2.7/site-packages',
]
USER_BASE: 'workspace/myproject/_pip' (exists)
USER_SITE: 'workspace/myproject/_pip/lib/python2.7/site-packages' 
(exists)
ENABLE_USER_SITE: True

pip -V命令:pip 9.0.1 from /usr/local/lib/python2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7)

如您所见,我的用户站点位于全局站点包位置上方。导航到用户站点目录时,可以看到最新版本的所有类和模块。命令pip list --user还会向我显示所需的版本。尽管如此,当我运行该项目时,仍会从全局站点包位置中拾取较旧的依赖项。我使用__file__变量来确定导入模块的完整路径,它显示了

'/usr/local/lib/python2.7/site-packages' 

但是,当我使用--ignore-installed选项运行pip install时,一切都会按预期运行。 sys.path具有相同的输出,但是__file__变量现在显示到user_site目录的路径。我承认我是python和pip的新手,但是据我对sys.path,python导入和user_site周围文档的理解,这不是预期的行为。有没有人遇到过类似的事情?我对puser如何使用--user选项有误解吗?关于此的任何输入都会有所帮助。

谢谢!

0 个答案:

没有答案