【问题标题】:install local package in tox unencumbered by previous install from GitHub在 tox 中安装本地包,不受之前从 GitHub 安装的影响
【发布时间】:2021-01-19 00:53:52
【问题描述】:

问题

当我从 GitHub 安装 pacakge 时,如何使用 tox 安装本地包而不参考随机时间?

上下文

this PR 中,我正在尝试构建和测试我的包dbt-synapse,然后将新的次要版本发布到PyPI。在某些时候(新手移动),我想我尝试使用以下行直接从特定的 GitHub 提交安装包。

pip install -e git+https://github.com/dbt-msft/dbt-synapse.git@345d7cafcb08bac25d23867a2e22c0e9b741f603#egg=dbt_synapse

Here's a gist of the requirements.txt, tox.ini, setup.py and some other files

当我调用 tox -e integration-synapse 开始测试时,将 deps 中的实际软件包列为 -e. 而只是 .,导致从 GitHub 安装软件包(请参阅下面的 integration-synapse installed: 行, 为清楚起见缩短)!

当 deps 只有 .,但它会将其列为已安装(这似乎也不正确):dbt-synapse @ file:///Users/anders.swanson/repos/dbt-synapse

不幸的是,两者都没有告诉我我知道应该发生的事情。

integration-synapse recreate: /Users/anders.swanson/repos/dbt-synapse/.tox/integration-synapse
integration-synapse installdeps: -rrequirements.txt, -e.
integration-synapse installed: [...],-e git+https://github.com/dbt-msft/dbt-synapse.git@345d7cafcb08bac25d23867a2e22c0e9b741f603#egg=dbt_synapse,[...]
integration-synapse runtests: PYTHONHASHSEED='1932234374'
integration-synapse runtests: commands[0] | /bin/bash -c '/Users/anders.swanson/repos/dbt-synapse/.tox/integration-synapse/bin/python -m pytest -v test/integration/synapse.dbtspec'
======================================================================================================================================== test session starts =========================================================================================================================================
platform darwin -- Python 3.6.12, pytest-6.2.1, py-1.10.0, pluggy-0.13.1 -- /Users/anders.swanson/repos/dbt-synapse/.tox/integration-synapse/bin/python
cachedir: .pytest_cache
rootdir: /Users/anders.swanson/repos/dbt-synapse
plugins: dbt-adapter-0.4.0
collected 1 item        

tox.ini

[tox]
skipsdist = True
envlist = integration-synapse

[testenv:integration-synapse]
basepython = python3
commands = /bin/bash -c '{envpython} -m pytest -v test/integration/synapse.dbtspec'
passenv = DBT_SYNAPSE_DB DBT_SYNAPSE_PORT DBT_SYNAPSE_PWD DBT_SYNAPSE_SERVER DBT_SYNAPSE_UID
deps =
    -rrequirements.txt
    -e.

【问题讨论】:

    标签: python pip pytest conda tox


    【解决方案1】:

    如果你想从一个干净的状态开始,你可以删除隐藏的.tox文件夹,从头开始。

    此外,您可以运行tox -r,它将重新创建环境。

    为了从您的本地开发环境测试代码,您不必将您的包包含在 deps 列表中 (-e.)。 tox 将从您的 setup.py 构建包。

    嗯.. 会的。但是在您的tox.ini 中,您指定了skipsdist = True,这意味着tox 不应构建包。

    您的tox.ini 中还有一些问题,例如unit 和 flake8 envs 什么都不做。

    为什么要使用/bin/bash -c 构造?

    不幸的是,我缺少一些头文件,所以我无法运行您的 tox.ini 文件,但我会创建一个像这样的 tox.ini 文件...

    [tox]
    envlist = py36,py37,py38,py39,integration-synapse,flake8
    
    [testenv]
    deps = whatever needed for your unit tests
    commands = python -m pytest ...unit tests...
    
    [testenv:integration-synapse]
    deps =
        pytest
        pytest-dbt-adapter
    commands =
        python -m pytest -v test/integration/synapse.dbtspec
    passenv = DBT_SYNAPSE_DB DBT_SYNAPSE_PORT DBT_SYNAPSE_PWD DBT_SYNAPSE_SERVER DBT_SYNAPSE_UID
    
    [testenv:flake8]
    skipsdist = True
    deps = flake8
    commands = flake8 setup.py ... (and more)
    

    【讨论】:

      猜你喜欢
      • 2023-01-18
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 2019-07-03
      • 1970-01-01
      相关资源
      最近更新 更多