我正在使用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选项有误解吗?关于此的任何输入都会有所帮助。
谢谢!