python -/usr/bin/python3 : No module named pytest

标签 python python-3.x pytest

我使用 python3 -m pytest 来运行我的测试。这在 python3 指向 python3.6 时有效。我安装了 python3.7,使用这些命令将 python3.7 作为我的默认 python3:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
sudo update-alternatives --config python3 

并为 python3.7 再次安装了所有必需的包。但是现在我不能再运行我的测试了。因为它说:/usr/bin/python3: No module named pytest。我没有使用虚拟环境,问题不在于特定模块,因为它也找不到其他模块。它应该与python路径有关。我不知道在 python3 版本之间切换后要更改什么,因此它可以轻松地在 /home/ubuntu/.local/lib/python3.x/site-packages/ 中找到所需的模块。

我切换回 python3.6 并得到 ModuleNotFoundError: No module named 'jsonpath_ng' 现在,它在切换到 python3.7 之前工作正常。这是 python3 -m site 的输出:

sys.path = [
    '/home/ubuntu',
    '/usr/lib/python36.zip',
    '/usr/lib/python3.6',
    '/usr/lib/python3.6/lib-dynload',
    '/home/ubuntu/.local/lib/python3.6/site-packages',
    '/usr/local/lib/python3.6/dist-packages',
    '/usr/lib/python3/dist-packages',
]
USER_BASE: '/home/ubuntu/.local' (exists)
USER_SITE: '/home/ubuntu/.local/lib/python3.6/site-packages' (exists)
ENABLE_USER_SITE: True

最佳答案

感谢@hoefling,我通过运行 python3 -m site 找到了问题。当我为 root 用户安装所有内容时,我正在使用我的 jenkins 用户而不是 root 运行测试。所以 USER_SITE 对于 jenkins 用户实际上并不存在。我为 jenkins 用户重新安装了所有东西,现在当我使用 python3 -m 时它可以找到模块。

关于python -/usr/bin/python3 : No module named pytest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60459442/

相关文章:

python - Pytest 2.5.2 覆盖率报告必须处理的缺失行

python - 根据条件将某些行的值与另一个最近的行相加

javascript - 如何转换非 HTML 4 实体来显示?

python - SymPy逻辑函数的同步替换

python-3.x - python - 在anaconda环境中安装spacy包的问题

python - 从字符串序列创建 Python lambda 函数

python - 每 10 秒运行一次 Python 脚本

python-3.x - tesseract 输出与输入图像不同

python - 在tox+pytest中使用自己的包

python - py.test SetUp/TearDown 用于整个测试套件