将 tox 与共享代码一起使用会导致双重依赖安装,最终降低依赖性
Using tox with shared code results in double dependency installation which ultimatly downgrades the dependency
我在一个存储库中有多个模块。现在我想单独测试每个模块的包装,而它们之间可能有依赖关系。幸运的是,我在文档中找到了使用 {distshare}/}
的依赖项选项。
tox.ini:
[testenv]
deps =
pytest
{distshare}/pandas-ml-common-*.zip
一旦我 运行 tox
它就会像人们期望的那样安装本地 zip。但是由于依赖项也列在 setup.py
中,因此模块被 pypi 的旧版本替换。是的,您猜对了,这会使测试失败。使用 distshare 安装依赖项后,如何避免从 pypi 安装?
标准输出:
(.venv) $ tox
GLOB sdist-make: /pandas-ml-utils/setup.py
py37 recreate: .tox/pandas_ml_common/py37
py37 installdeps: pytest, .tox/distshare/pandas-ml-common-0.2.0.zip
py37 inst: .tox/pandas_ml_common/.tmp/package/1/pandas-ml-utils-0.2.0.zip
py37 installed: cachetools==4.1.1,...,pandas-ml-common==0.1.15,... <--- here it is again
编辑:
来自 setup.py:
packages=find_packages(),
install_requires=["pandas-ml-common", *open("requirements.txt").read().splitlines()],
extras_require={
"dev": open("dev-requirements.txt").read().splitlines(),
},
include_package_data=True,
在 requirements.txt 中只有像 numpy 这样的外部依赖项(没有版本 atm 的一切)。
我可能会尝试类似的方法:
[tox]
# ...
[testenv]
deps =
pytest
# omit "{distshare}/pandas-ml-common-*.zip"
commands_pre =
python -m pip install {distshare}/pandas-ml-common-*.zip
# ...
我在一个存储库中有多个模块。现在我想单独测试每个模块的包装,而它们之间可能有依赖关系。幸运的是,我在文档中找到了使用 {distshare}/}
的依赖项选项。
tox.ini:
[testenv]
deps =
pytest
{distshare}/pandas-ml-common-*.zip
一旦我 运行 tox
它就会像人们期望的那样安装本地 zip。但是由于依赖项也列在 setup.py
中,因此模块被 pypi 的旧版本替换。是的,您猜对了,这会使测试失败。使用 distshare 安装依赖项后,如何避免从 pypi 安装?
标准输出:
(.venv) $ tox
GLOB sdist-make: /pandas-ml-utils/setup.py
py37 recreate: .tox/pandas_ml_common/py37
py37 installdeps: pytest, .tox/distshare/pandas-ml-common-0.2.0.zip
py37 inst: .tox/pandas_ml_common/.tmp/package/1/pandas-ml-utils-0.2.0.zip
py37 installed: cachetools==4.1.1,...,pandas-ml-common==0.1.15,... <--- here it is again
编辑: 来自 setup.py:
packages=find_packages(),
install_requires=["pandas-ml-common", *open("requirements.txt").read().splitlines()],
extras_require={
"dev": open("dev-requirements.txt").read().splitlines(),
},
include_package_data=True,
在 requirements.txt 中只有像 numpy 这样的外部依赖项(没有版本 atm 的一切)。
我可能会尝试类似的方法:
[tox]
# ...
[testenv]
deps =
pytest
# omit "{distshare}/pandas-ml-common-*.zip"
commands_pre =
python -m pip install {distshare}/pandas-ml-common-*.zip
# ...