我正在寻找一种方法来使用pip或类似方法将python包列表安装到自定义目标目录(ex./mypath/python/pkgs/),但也排除/黑名单特定依赖项.
我想排除特定的依赖项,因为它们已经从不同的安装路径(例如anaconda安装)得到满足.我没有权限将包添加到默认的python安装(我也不想).
我目前使用pip的-r和-t选项.但还没有找到排除特定包的方法.
像这样的pip命令是理想的:
pip install --log pip.log -r req.txt -t /mypath/pypkgs/ --exclude exclude.txt
Run Code Online (Sandbox Code Playgroud)
--no-deps 因为我需要一些依赖项,所以不是一个选项.
我目前正在寻求一个python脚本来执行pip安装,其中包含我不需要的依赖项:
pip install --log pip.log -r req.txt -t /mypath/python/pkgs/
Run Code Online (Sandbox Code Playgroud)
然后(自动)在pip安装完成后删除不需要的依赖项.
我希望pip命令的某些组合可以实现我正在寻找的一些直截了当的东西.我正在使用pip 7.1.2.谢谢!
类似,但我没有升级,想要指定目标路径:
kod*_*tin 12
面对类似的问题,并使用正在运行的bash shell我设法排除了特定的包
pip install $(grep -ivE "pkg1|pkg2|pkg3" requirements.txt)
Run Code Online (Sandbox Code Playgroud)
where pkg1等等是要排除的包的名称.
lin*_*k89 10
您可以使用pip install --no-depswithpip check来排除特定的包。我的一个真实的例子是,当我paddleocr在Jetson Nano上安装时,pip一直给我安装python-opencv,它已经自己安装了,没有使用pip,但pip无法检测到它。要停止为我pip安装python-opencv,请执行以下步骤
pip install --no-deps paddleocr安装paddleocr而无需依赖项pip check列出未解决的依赖项,重新格式化输出,以便可以读取它pip install -r,然后删除您不想安装的包(python-opencv在我的情况下),并将其保存到名为的文件中fix-deps.txtpip install --no-deps -r fix-deps.txt安装未解决的依赖项pip check仅包含您不想安装的软件包。pip install --no-deps和是非常有用的命令,允许您在无法正确完成pip check依赖项时自行解决依赖项。pip该解决方案的缺点是输出pip check是为人类设计的,它不能pip install -r直接使用,因此您必须手动重新格式化输出或使用awk命令。
PR 和 Issue 已经为 pip 社区创建,以使输出pip check适合pip install阅读,但由于某种原因,他们认为这不是一个好主意。所以我想这是我们现在能做的最好的事情了。
更新:
您还可以使用johnnydep递归方式列出依赖项。所以下面的一行应该有效
johnnydep paddleocr --output-format pinned | grep -v opencv > pkgs.txt && pip install --no-deps -r pkgs.txt
Run Code Online (Sandbox Code Playgroud)
参考文献:
小智 6
考虑子依赖关系的一种方法是首先安装 except.txt 环境,然后安装 req.txt 环境,然后检查 diff,最后将其安装到目标目录中。
使用适用于 GNU/Linux 的 virtualenv 的示例:
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
Run Code Online (Sandbox Code Playgroud)
我认为这基本上可以通过几个步骤来实现,假设您正在使用virtualenv或类似的...
如果你第一次做正常,pip freeze > requirements.txt你将获得所有传递依赖(例如,不排除任何东西.)
现在编辑requirements.txt,删除要排除的包...
最后,在新的环境中做pip install -r requirements.txt -t ... --no-deps.Voila:您已经安装了所需的依赖项,同时排除了特定的依赖项.
| 归档时间: |
|
| 查看次数: |
7763 次 |
| 最近记录: |