【问题标题】:Get site-packages directory in nox在 nox 中获取站点包目录
【发布时间】:2021-02-12 13:00:32
【问题描述】:

在 tox 中,我可以使用 envsitepackagesdir 魔法变量 get the site-packages directory of the current environment。我如何在nox 中做同样的事情?这在尝试覆盖我的包裹时特别有用。

import nox

@nox.session()
def test(session):
    session.install('.')
    session.install('pytest', 'pytest-cov')
    session.run('pytest', '--cov', f'{session.virtualenv.site_packages_dir}/mypackage')

【问题讨论】:

    标签: python nox


    【解决方案1】:

    只要你实际安装的是nox环境(不使用venv_backend='none'),就可以从虚拟环境的位置和platform.sys算出这个:

    import nox
    
    @nox.session()
    def test(session):
        if platform.system() == "Windows":
            site_packages = f'{session.virtualenv.location}/Lib/site-packages'
        else:
            site_packages = f'{session.virtualenv.location}/lib/python{session.python}/site-packages'
    
        session.install('.')
        session.install('pytest', 'pytest-cov')
        session.run('pytest', '--cov', f'{site_packages}/mypackage')
    

    【讨论】:

      【解决方案2】:

      envsitepackagesdir 实际上并不是覆盖所必需的。您可以将模块名称传递给--covcoverage 将计算该模块的覆盖率:

      import nox
      
      @nox.session()
      def test(session):
          session.install('.')
          session.install('pytest', 'pytest-cov')
          session.run('pytest', '--cov', 'mypackage')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        • 1970-01-01
        • 2019-09-30
        相关资源
        最近更新 更多