似乎您从源代码构建的 Python 是 under /usr/local,而您的PATH变量/usr/local/bin之前是 under /usr/bin,因为运行python3.7会得到一个 under/usr/local而不是打包的一个/usr/bin/python3.7。
看看你的PATH来验证这一点。
echo $PATH
(当您在 中运行程序时bash,该特定运行bash实例将记住该位置,并且不会PATH再次重新扫描该程序中的目录,因此它不会注意到在PATH.hash -r重置缓存或退出外壳并再次启动它。)
我认为您的目标是python3.7(或 Python 提供的任何其他命令)从您的打包安装中运行/usr.
不幸的是,python 构建过程不提供卸载方法——仅删除源 Python 安装安装的文件的唯一自动化方法需要提前使用其他工具(例如checkinstall)。
所以你有一些选择:
改变你的PATH所以/usr/local/bin是之后/usr/bin。为此,请编辑您的~/.profile文件或任何其他配置您的PATH和注销/登录的脚本。这也会影响您运行的任何其他在/usr/local/bin和中都可用的命令/usr/bin。
删除/usr/local并重新安装您想要的任何其他内容。如果 Python 安装是你/usr/local的 .
煞费苦心地找出哪些文件/usr/local/bin是 Python 的一部分并将其删除。您也许可以使用/usr/bin已安装python3软件包中的相应文件作为起点来找出/usr/local/bin.
/usr/bin从已安装的python3*包中获取文件列表的单行:
$ for pkg in $(dpkg -l 'python3*' | grep '^ii' | cut -f 3 -d' '); do dpkg -L $pkg | grep '^/usr/bin/'; done | sort
这应该产生一个文件列表,如:
/usr/bin/2to3-3.x
/usr/bin/chardet3
...
(我已经在 Debian 上测试过这个单线,我不确定 Ubuntu 是否需要任何更改)