首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xdist设置远程环境

使用xdist设置远程环境
EN

Stack Overflow用户
提问于 2014-12-11 16:03:07
回答 2查看 2.4K关注 0票数 9

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

不幸的是,当使用xdist分发测试时,只调用一个“裸”bash,而没有加载任何特定于配置文件的rcs。因此,测试失败时会出现一些导入错误,如as解析,而pytest所要求的这些错误是不可用的。

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

我尝试使用带有会话范围和autouse=True (当然)不起作用的固定装置。而且我还试过

代码语言:javascript
复制
# in conftest.py
import sys    
def pytest_configure_node():
    sys.path.insert(1, "/somepath/")
    print sys.path

这似乎是在远程主机上执行的,但是sys.path仍然是主机之一,而且and解析模块仍然无法导入。

我开始测试的时候

代码语言:javascript
复制
py.test --tx ssh=user@server//python="abaqus613 python" -vs --dist=each --rsyncdir foo

这将启动正确的python解释器(用于Abaqus6.13-2的Python2.6.2),但在

代码语言:javascript
复制
ImportError: No module named argparse
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-14 13:47:32

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

安装脚本(setup.sh)位于远程计算机上,如下所示:

代码语言:javascript
复制
export PYTHONPATH=/path/to/libraries

完全的呼叫是现在

代码语言:javascript
复制
py.test --tx ssh=user@server//python="source setup.sh;abaqus613 python" -vs --dist=each --rsyncdir foo

这样,我就可以在abaqus中获得必要的导入。

票数 1
EN

Stack Overflow用户

发布于 2015-03-05 22:35:01

我的插件https://github.com/pytest-dev/pytest-cloud应该能帮你

它会自动将python虚拟环境与辅助服务器同步,其中一项要求是您的虚拟文件夹应该位于测试文件夹所在的文件夹中。

在rsync之后,它还激活了虚拟环境,因此您的所有依赖项都已正确存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27427211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档