gpt4 book ai didi

python - 使用 xdist 时设置远程环境

转载 作者:太空狗 更新时间:2023-10-29 21:09:49 25 4
gpt4 key购买 nike

我目前正在从事一个涉及在远程主机 (bash) 上运行的测试的项目。不幸的是,远程 python 解释器不尊重可用的站点包(它是一个嵌入式包:abaqus python (2.6))。但是,使用 PYTHONPATH 变量可以指定本地安装并使其他包可用。因此,在远程机器上,我只需将相应的行添加到我的 .bashrc 文件中。

不幸的是,当使用 xdist 分发测试时,只会调用“裸”bash,而不会加载任何配置文件特定的 rcs。因此,测试失败并出现一些导入错误,因为 pytest 所需的 argparse 不可用。

有没有办法在开始执行任何 pytest 代码(需要 argparse)之前设置远程主机?换句话说,有没有办法在 pytest 导入开始之前在主机上添加环境变量?

我尝试使用具有 session 范围和 autouse=True 的固定装置(当然)不起作用。此外,我尝试过类似的东西

# in conftest.py
import sys
def pytest_configure_node():
sys.path.insert(1, "/somepath/")
print sys.path

这看起来像是在远程主机上执行的,但是 sys.path 仍然是主机,argparse 模块仍然无法导入。

我开始测试使用

py.test --tx ssh=user@server//python="abaqus613 python" -vs --dist=each --rsyncdir foo

这将启动正确的 python 解释器(Abaqus 6.13-2 的 Python 2.6.2),但失败

ImportError: No module named argparse

最佳答案

我终于想出了一个相当 hackish 但合理的工作方式。可以在 python 调用中指定一系列命令,因此我在调用 abaqus python 之前获取了一个设置环境的脚本。

位于远程机器上的设置脚本 (setup.sh) 如下所示:

export PYTHONPATH=/path/to/libraries

现在是完整的调用

py.test --tx ssh=user@server//python="source setup.sh;abaqus613 python" -vs --dist=each --rsyncdir foo

这样我就可以在 abaqus python 中进行必要的导入。

关于python - 使用 xdist 时设置远程环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27427211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com