我使用 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/