将tox与共享代码一起使用会导致双重依赖项安装,从而最终降级了依赖项

时间:2020-10-02 11:59:57

标签: python tox

我在一个存储库中有多个模块。现在,我想分别测试每个模块的包装,尽管它们之间可能存在依赖关系。幸运的是,我在文档中使用{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的东西)。

1 个答案:

答案 0 :(得分:0)

我可能会尝试以下方法:

var url = window.rootUrl + 'DUP/GetAllStreets';
        $.getJSON(url, function (streets) {
            console.log("streets", streets)
            $("#streetNameID").append('<option></option>');
            $.each(streets, function (index, value) {
                $("#streetNameID").append('<option value="' + value.Ime_1251 + '">' + value.Ime_1251 + '</option>');
            });
        });