Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
/usr/bin/python3:没有名为pytest的模块_Python_Python 3.x_Pytest - Fatal编程技术网

/usr/bin/python3:没有名为pytest的模块

/usr/bin/python3:没有名为pytest的模块,python,python-3.x,pytest,Python,Python 3.x,Pytest,我使用python3-mpytest来运行我的测试。当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/pyt

我使用
python3-mpytest
来运行我的测试。当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:没有名为pytest的模块。我没有使用virtualenv,问题不在于特定的模块,因为它也找不到其他模块。它应该与python路径相关。在切换python3版本后,我不知道要更改什么,这样它就可以在
/home/ubuntu/.local/lib/python3.x/site packages/
中轻松找到所需的模块

我切换回python3.6,得到了
ModuleNotFoundError:现在没有名为'jsonpath_ng'的模块
,它在切换到python3.7之前是工作的。这是python3-m站点的输出:

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站点
发现了问题。我用jenkins用户而不是root用户运行测试,同时为root用户安装所有东西。所以jenkins用户的用户_站点实际上并不存在。我再次为jenkins用户安装了所有组件,现在当我使用
python3-m
时,它可以找到这些模块

您可能没有使用正确的PIP和正确的Python解释器。尝试运行
python3-mpipinstallpytest--user
(如果在系统范围内安装,可以省略
--user
)。系统的PIP可能仍然使用了错误的Python解释器,这可能会解决您的问题。我运行了该命令,它说:
默认为用户安装,因为正常的站点包不可写要求已经得到满足:pytest in/home/ubuntu/.local/lib/python3.7/site-packages(5.3.5).
非常有趣。您是否可以尝试进入解释器并运行
import pytest
import sys;sys.executable
?我进入python3解释器,运行
import pytest
,没有显示任何错误,然后运行
import sys;sys.executable
,它显示了
/usr/bin/python3
,老实说,我很困惑,因为似乎所有东西都安装正确了。你能从shell中尝试
文件/usr/bin/python3
吗?例如,在我这边,它给了我到python3.7的符号链接。这将确认它使用的是正确的解释器。很高兴我能提供帮助,尽管你最终自己也发现了问题,所以不太感谢我:-)你能解释一下你是如何理解jenkin用户与root用户的关系的吗。我也有同样的问题,无法找到解决办法。谢谢