繁体   English   中英

使用 pip 安装 python package 的开发版本,但具有稳定的依赖关系

[英]Install using pip a development version of a python package but with stable dependencies

背景

pip install命令默认安装 python package 的最新稳定版本( PEP426指定的稳定版本)

pip install命令的标志--pre告诉 pip 还考虑 python 软件包的发布候选和开发版本。 据我所知, pip install --pre packageA它将安装packageA的开发版本,但也会安装其所有依赖项的开发版本。

问题是:

是否可以使用 pip 安装 package 的开发版本,但安装其所有依赖项的稳定版本?

尝试的解决方案

我尝试过的一件事是安装 package 的稳定版本(具有稳定的依赖项),然后重新安装没有依赖项的开发版本: pip install packageA pip install --pre --no-deps --upgrade --force-reinstall packageA的问题是,如果packageA的开发版本添加了新的依赖项,则不会安装。

我错过了什么? 谢谢!

我编写了一个脚本来执行此操作( pip_install_dev_and_stable_of_dependencies.py ):

#!/usr/bin/env python
import os
import sys


def get_installed_packages():
    with os.popen('pip freeze') as f:
        ss = f.read().strip().split('\n')
    return set(i.split('=')[0].strip().lower() for i in ss)


def install_pre_with_its_dependencies_stable(package):
    already_installed_packages = get_installed_packages()
    os.system('pip install --pre ' + package)
    dependencies = ' '.join(
        p for p in get_installed_packages()
        if p not in already_installed_packages | set([package])
    )
    os.system('pip uninstall -y ' + dependencies)
    os.system('pip install ' + dependencies)


def main():
    for p in sys.argv[1:]:
        install_pre_with_its_dependencies_stable(p)


if __name__ == '__main__':
    main()

用法:

(venv)$ chmod +x pip_install_dev_and_stable_of_dependencies.py
(venv)$ ./pip_install_dev_and_stable_of_dependencies.py pandas

这应该可以解决问题。

  1. 首先安装没有依赖项的 package: pip install --pre --no-deps package
  2. 然后在没有--pre的情况下再次运行以安装稳定的依赖项: pip install package

您应该能够执行以下操作

pip install --upgrade "package>=0.0.1.dev"

这应该安装一个新的dev版本而不安装其他包的预发布依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM