在 tox 中安装本地包,不受之前从 GitHub 安装的影响
install local package in tox unencumbered by previous install from GitHub
问题
当我从 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.
如果你想从一个干净的状态开始,你可以删除隐藏的.tox
文件夹并从头开始。
此外,您可以 运行 tox -r
这将 重新创建 环境。
为了从您的本地开发环境测试代码,您不必将您的包包含在 deps 列表中 (-e.
)。 tox
将从您的 setup.py
.
构建包
嗯..会的。但是在你的 tox.ini
中你指定了 skipsdist = True
这 afaik 意味着 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)
问题
当我从 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.
如果你想从一个干净的状态开始,你可以删除隐藏的.tox
文件夹并从头开始。
此外,您可以 运行 tox -r
这将 重新创建 环境。
为了从您的本地开发环境测试代码,您不必将您的包包含在 deps 列表中 (-e.
)。 tox
将从您的 setup.py
.
嗯..会的。但是在你的 tox.ini
中你指定了 skipsdist = True
这 afaik 意味着 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)