首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Pip安装到自定义目标目录,并排除特定的依赖项

将Pip安装到自定义目标目录,并排除特定的依赖项
EN

Stack Overflow用户
提问于 2015-10-30 16:49:49
回答 4查看 30K关注 0票数 33

我正在寻找一种方法,使用pip或similiar将python包的列表安装到自定义目标目录(ex./mypath/python/pkgs/ ),但也排除/黑名单特定的依赖项。

我希望排除特定的依赖项,因为它们已经满足于不同的安装路径(例如anaconda安装)。我没有将包添加到默认python安装中的特权(我也不想这样)。

我目前正在使用pip的-r和-t选项。但还没有找到排除特定包的方法。

像这样的pip命令是理想的:

代码语言:javascript
运行
复制
pip install --log pip.log -r req.txt -t /mypath/pypkgs/ --exclude exclude.txt

--no-deps不是一个选项,因为我需要一些依赖项。

我目前正在使用python脚本来执行pip安装,其中包括我不需要通过的依赖项:

代码语言:javascript
运行
复制
pip install --log pip.log -r req.txt -t /mypath/python/pkgs/

然后(自动)在pip安装完成后删除不需要的依赖项。

我希望pip命令的一些组合能够实现我正在寻找的一些简单明了的东西。我用的是pip 7.1.2。谢谢!

类似的,但我不升级,希望指定目标路径:

pip: upgrade package without upgrading particular dependency

EN

回答 4

Stack Overflow用户

发布于 2017-11-23 12:35:12

面对类似的问题,并且使用运行的bash,我设法将特定的包排除在

代码语言:javascript
运行
复制
pip install $(grep -ivE "pkg1|pkg2|pkg3" requirements.txt)

其中,pkg1等是要排除的包的名称。

票数 24
EN

Stack Overflow用户

发布于 2016-08-01 19:30:32

我认为这基本上可以通过几个步骤来实现,假设您使用的是虚拟环境或类似的.

  • 如果您首先执行一个普通的pip freeze > requirements.txt,您将得到所有的传递依赖项(例如,不排除任何东西)。
  • 现在编辑requirements.txt,删除要排除的包.
  • 最后,在一个新的环境中做pip install -r requirements.txt -t ... --no-deps。瞧:您已经安装了所需的依赖项,而不包括特定的依赖项。
票数 14
EN

Stack Overflow用户

发布于 2020-11-14 11:38:32

考虑到子依赖关系的一种方法是首先安装exclude.txt环境,然后安装req.txt环境,然后检查diff,最后将其安装到目标目录中。

使用在GNU/Linux上工作的virtualenv示例:

代码语言:javascript
运行
复制
virtualenv tmpenv
source tmpenv/bin/activate

pip install -r exclude.txt
pip freeze > exclude-with-deps.txt
pip install -r req.txt
pip freeze > req-with-deps.txt
comm -13 exclude-with-deps.txt req-with-deps.txt > final-req.txt

pip install -r final-req.txt --no-deps -t pypkgs
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33441033

复制
相关文章

相似问题

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