问题描述
我有一个依赖软件包,必须与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)
)。因此,不可能有两个不同的安装命令。因此,我们将不得不创建一种解决方法。
一种方法可能是:
- 关闭常规安装流程。 (
skipp_install = true
) - 使用commands_pre以正确的顺序执行所有安装命令。
- 使用常规
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