【问题标题】:using pip to install dependencies from dependencies使用 pip 从依赖项中安装依赖项
【发布时间】:2023-04-03 11:50:01
【问题描述】:

我想使用 tox 运行一些测试,但为了让它工作,他尝试先导入一些模块,然后使用 pip 进行。

我的项目结构如下所述:

module_a/
 /tests/test_a.py
 /__requirements.txt
 /__tox.ini

module_b/
 /tests/test_b.py
 /__requirements.txt
 /__tox.ini

module_c/
 /tests/test_c.py
 /__requirements.txt
 /__tox.ini
module_a/requirements.txt

#requirements.txt content from module A
'../module_b'

module_b/requirements.txt
#requirements.txt content from module B
'../module_c'

我所期望的只是通过要求 module_b 来导入 module_c,因为他需要他,但由于某种原因我不能,它会引发错误

错误:找不到满足模块_c(来自模块_b)要求的版本(来自版本:无) 错误:没有为 module_c 找到匹配的分布

因此,我还必须在 module_a requirements.txt 中添加 module_c 才能工作。

#requirements.txt content from module A
'../module_c'
'../module_b'

tox.ini 文件

[tox]
envlist =
    py3

[testenv]
deps =
    -r requirements.txt
commands =
    #basically the same for all modules, only module name changes
    pytest --cov {envsitepackagesdir}/module_a

如果我只是在 module_b 中运行 pip install 就可以正常工作,不像 module_c 的路径错误。

有一种方法可以在运行 tox 或仅 pip 时使用 requirements.txt 从依赖项中安装依赖项?

【问题讨论】:

  • 你能分享一下你现在的tox.ini吗?请添加tree -L2 或类似的输出。谢谢!
  • 我放了tox.ini,但不好意思问一下,tree -L2是什么意思?
  • 谢谢! tree -L2 是 linux 命令,用于显示 2 级深度的目录结构,但我刚刚看到,您在上面包含了一些结构。所以,基本上你有一个文件夹,里面有三个子文件夹(module_a、module_b、module_c),每个模块都有自己的tox.inirequirements.txt?对?并且通过 tox 运行每个项目的测试是可行的,但是现在你想在模块之间运行一些集成测试,你有问题,对吧?
  • 是的,这正是正在发生的事情
  • 我尝试只使用没有 tox 的 pip3 来做同样的事情,因为 tox 使用 pip3 并且我遇到了同样的问题

标签: python-3.x tox


【解决方案1】:

鉴于 cmets 中的最新反馈,这不是 tox 问题,而是构建项目的问题。

通常有两种方式一起开发代码:

  • 将所有内容放在一个存储库中,并创建一个适当的包 (__init__.py),然后您可以毫无问题地导入其他子包
  • 使用不同的项目和存储库,并正确安装依赖项

有一些方法可以改变第二种方式,所以你可以使用其他包的源代码作为依赖。

我只知道有一个项目这样做:morepath

你可以看看他们的tox.ini配置:

[src]
deps = -e file:{toxinidir}/src/reg#egg=reg
       -e file:{toxinidir}/src/dectate#egg=dectate
       -e file:{toxinidir}/src/importscan#egg=importscan

[testenv]
usedevelop = True
extras = test
deps = {[src]deps}
       -r{toxinidir}/requirements/fixtures.txt

您可以在...上找到完整的配置

https://github.com/morepath/morepath/blob/09972904229f807da75c75d8825af1495057acdc/tox.ini

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 2021-10-05
    • 2018-09-27
    • 2011-01-20
    • 2021-05-29
    • 2011-11-12
    • 2020-10-04
    • 2013-11-20
    • 2015-04-01
    相关资源
    最近更新 更多