这篇文章涉及这问题是我被要求解释如何在我的系统上安装 python3。我试图在我的系统上安装 python3 以用于开发目的。一路上出了点问题,现在我的系统无法识别默认的 python 安装或 python 3.4 安装。另外,像 yum 这样的应用程序也被破坏了。
sudo apt-get install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev
sudo yum install scl-utils
sudo wget https://www.softwarecollections.org/en/scls/rhscl/python33/epel-7-x86_64/download/rhscl-python33-epel-7-x86_64.noarch.rpm
sudo yum install rhscl-python33-*.noarch.rpm
另外,我附加并后来从 .bashrc 文件中删除的行是
alias python='/opt/rh/python33/root/usr/bin/python3.3'
回想起来,我认为它应该是“python3.4”,但无论哪种方式,我可能错误地认为简单地注释掉这一行就会消除它的效果。
编辑:另外,如果没记错的话,apt-get 是无关紧要的,因为我试图以错误的方式安装它,所以我真的不应该将它包含在这里。
编辑添加命令的输出:
只需输入“python”即可返回:
-bash: python: command not found
which python
给出:
/usr/bin/which: no python in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/myusername/.local/bin:/home/myusername/bin)
/usr/bin
然而,和中都有一个 python 安装/usr/sbin
。
alternatives --list | grep -i python
产量:
python auto /usr/bin/python3.4
-v python
什么也不返回。
type -a python
给出:
-bash: type: python: not found
declare -p PATH
输出
declare -x PATH="/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/myusername/.local/bin:/home/myusername/bin"
我似乎确实有/usr/bin/python
:
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 24 Jun 25 15:39 /usr/bin/python -> /etc/alternatives/python
但:
$ ls -l $(readlink -f /usr/bin/python)
给出:
ls: cannot access /usr/bin/python3.4: No such file or directory
我不知道这是否相关,但/etc/alternatives/python
在终端中看起来是粉红色的。
ls -l /usr/local/bin/` prints `-rwxr-xr-x 1 root root 101 Sep 4 2014 2to3-3.4
-rwxr-xr-x 1 root root 241 Sep 4 2014 easy_install-3.4
-rwxr-xr-x 1 root root 99 Sep 4 2014 idle3.4
-rwxr-xr-x 1 root root 213 Sep 4 2014 pip3.4
-rwxr-xr-x 1 root root 84 Sep 4 2014 pydoc3.4
-rwxr-xr-x 2 root root 17544 Sep 4 2014 python3.4
-rwxr-xr-x 2 root root 17544 Sep 4 2014 python3.4m
-rwxr-xr-x 1 root root 3066 Sep 4 2014 python3.4m-config
-rwxr-xr-x 1 root root 236 Sep 4 2014 pyvenv-3.4
还,
/opt/rh/python33/root/usr/bin/python3.3
返回:
/opt/rh/python33/root/usr/bin/python3.3: error while loading shared libraries: libpython3.3m.so.1.0: cannot open shared object file: No such file or directory
答案1
您的系统处于不一致的状态,因为您没有将系统使用的 Python 2.7(CentOS7 上的 /usr/bin/python)与编程/脚本等替代用途的 Python 3.5 分开。 CentOS 7 依赖于 /usr/bin/python 是 python2.7,最重要的用例是 Yum 包管理。
在干净的 CentOS 7 系统上,您可以从以下位置安装 Python 3.5软件合集和:
sudo yum install -y centos-release-scl
sudo yum install -y rh-python35
要启用它,您需要在 shell 中获取其环境:
. /opt/rh/rh-python35/enable
然后使用python3
以可移植的方式运行脚本。 (注意:/opt/rh/rh-python35/root/bin/python
是一个不幸的符号链接。)
启用运行配置还会创建环境变量,例如 python3.5 查找共享库所需的 LD_LIBRARY_PATH。
为了摆脱系统混乱的局面,我首先要从 /usr/bin 中删除指向 /etc/alternatives 的 python 符号链接。
确保 /usr/bin/python2.7 是 ELF LSB 可执行文件。重新创建所需的符号链接: ln -s /usr/bin/python2.7 /usr/bin/python2 ln -s /usr/bin/python2 /usr/bin/python
一旦这些工作成功,您应该能够再次使用 Yum。