在Python setup.py sdist之前与/一起运行easy_install

问题描述

我有一个依赖软件包,必须与easy_install一起安装

easy_install deps/my_deps_package.egg

我当前的步骤:

  • 创建虚拟环境
  • 安装依赖项:easy_install deps/my_deps_package.egg
  • 运行安装程序并安装软件包:python setup.py sdist && pip install -e .[dev] dist/my_package.tar.gz

现在工作正常,但是我无法将my_deps_package.egg添加到requirements.txt,并且我想在运行python setup.py sdist时应该安装所有这些内容。

我正在使用tox来运行测试,并且似乎没有选择在安装软件包之前运行easy_install的选择。

是否有将easy_install与python setup.py进程或tox一起使用的方法?

解决方法

tox通常使用一个安装工具/命令,可以使用install_command进行设置。它将同时将deps中定义的包和您的包都传递到该install_command(默认为python -m pip install {opts} {packages}(ARGV))。因此,不可能有两个不同的安装命令。因此,我们将不得不创建一种解决方法。

一种方法可能是:

  1. 关闭常规安装流程。 (skipp_install = true
  2. 使用commands_pre以正确的顺序执行所有安装命令。
  3. 使用常规commands进行任何操作。
[testenv]
skip_install = true
commands_pre = 
    easy_install deps/my_deps_package.egg
    python setup.py sdist
    python -m pip install -e .[dev] dist/my_package.tar.gz
commands =
    pytest

这样,由于安装命令仅存在于commands_pre中,因此您仍可以实现一些关注点分离。

奖金:

[testenv:something]
# This should inherite the pre_commands from [testenv]
commands = 
    # Do something else :)
    ls

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...