<p><strong>更新</strong>tox项目中存在一个问题,该问题可能会增加功能,以更“官方”的方式处理此类问题。讨论在这里:<a href="https://github.com/tox-dev/tox/issues/167" rel="nofollow noreferrer">Add an option to run commands after virtualenv creation but before other steps</a></p>
<p><strong>更新(背景知识多一点):</strong>主要问题是,假设某个其他包已经安装在<code>setup.py</code>中是一件坏事。这类问题属于<a href="https://en.wikipedia.org/wiki/Bootstrapping" rel="nofollow noreferrer">bootstrapping</a>的范畴,它们很难正确处理,但通常需要付出额外的努力才能实现。如果您在安装时真的需要一个不同的包,您可以查看<code>setup_requires</code>和一些额外的魔法(比如在<a href="https://github.com/pypa/setuptools_scm" rel="nofollow noreferrer">setuptools_scm</a>上查看以获得灵感)。在最坏的情况下,如果软件包不是很复杂,您可以将其作为您的软件包的一部分(尽管这样做也会带来一些问题,比如保持更新和可能的许可冲突)。在</p>
<p><strong>原始答案</strong>:</p>
<p>如果您已经使用了<code>requirements.txt</code>,一个简单的(但公认的丑陋的)解决方案是:</p>
<ol>
<li>创建两个(或更多)需求文件(例如<code>requirements-0.txt</code>和{<cd5>}(希望有更好的名称))。在</li>
<li>按依赖关系将包排序到这些文件中</li>
<li>使用<a href="http://tox.readthedocs.org/en/latest/config.html#confval-commands=ARGVLIST" rel="nofollow noreferrer">commands</a>而不是<a href="http://tox.readthedocs.org/en/latest/config.html#confval-deps=MULTI-LINE-LIST" rel="nofollow noreferrer">deps</a>以正确的顺序安装它们</li>
</ol>
<p>例如</p>
<pre><code>[testenv]
deps =
pytest
# whatever else where order does not matter
commands =
pip install -r {toxinidir}/requirements-0.txt
pip install -r {toxinidir}/requirements-1.txt
# ... and more if needed
# now do your actual testing ...
pytest tests/unit
</code></pre>
<p>。。。或者,如果您想让它更简单,只需将导入到另一个包的<code>setup.py</code>中的包粘贴在您的单个文件的前面要求.txt在</p>
^{pr2}$