昨天我重新安装了我的 Linux Mint duo 我现在面临的类似问题。 我安装了 Python 3.6:
apt-get install build-essential checkinstall libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
cd /usr/src
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
tar xzf Python-3.6.0.tgz
cd Python-3.6.0
./configure
make altinstall
python3.6 -V
然后,Linux 上默认有 Python 2.7.12,我可以通过以下方式看到:
python -V
Python 2.7.12
当我检查时:
python3 -V
我的输出是:
Python 3.5.2
但是:
python3.6 -V
Python 3.6.0
我也下载并安装了 Pycharm,但问题是,Project Interpreter 找不到 Python 3.6,我也无法以任何方式手动添加 Python 3.6。
我注意到 PyCharm 中其他 Python 版本的 PATH 看起来像:
/usr/bin/python2.7
/usr/bin/python3.5
但我在那里找不到任何 Python 3.6。
还有一件事 - 当我检查时:
/usr/local/lib/python3.5/dist-packages
这是我能在那里找到的唯一文件夹,它是空的,但当我尝试用 pip 做一些事情时,它会自动保存在那里。
但是:
/usr/local/lib/python3.6
不包含这样的文件夹。我记得,这是安装所有模块的文件夹。
1) Python 3.6 是否安装正确,如果没有,如何解决?
2) Python 3.5.2 到底是怎么安装的,我应该删除它吗?
3) 如何让 PyCharm 在 Python 3.6 上运行
4) Python 3.5 会导致安装模块出现问题,我在重新安装 Linux 之前遇到了同样的问题。这里有什么问题吗?
最佳答案
命令的输出是什么: $ update-alternatives --list python3
在你的系统上?
它看起来像吗:
/usr/bin/python3.5
/usr/bin/python3.6
如果是这样你可以使用命令:
$ sudo update-alternatives --config python3
选择要运行的 python3 版本。但是,请注意,您安装的某些软件可能依赖于 3.5 版,更改默认的 python3 可能会产生副作用。您应该能够将默认值更新到 python3.6,然后安装所需的软件包,并在需要时切换回默认值 3.5。
但是,您将不断地交换默认设置,迟早您可能会忘记并陷入某种版本控制冲突。
根据自己对python3.6的具体需求,需要的时候可以选择性的使用。
这里有一些例子......
1) 在命令行工作时,使用“python3.6”而不是“python3”启动 python session ,您将使用 3.6 而不是 3.5。
2) 在编写 python 可执行文件时,使用 shebang 行 '#!/usr/bin/python3.6' 而不是 '#!/usr/bin/python3' 以确保您使用的是 python 3.6
3) 在命令行运行 python 文件时使用
'python3.6 文件名.py'
或
'python3.5 文件名.py'
根据需要调用你需要的特定版本的python。
这些都比较麻烦,但是相对安全。您只会在需要时使用 3.6。
保持系统安全、支持多个 python 版本并且不破坏 3.5 版本的任何系统依赖性的最佳方法是了解虚拟环境。这些环境使用它们自己指定的 python 版本,以及它们环境的特定包。
虚拟环境一开始有点复杂,但是一旦你掌握了它们,就有几个独立的项目是很好的,每个项目都有稍微不同的依赖集,都在自己的足迹中,而不是互相踩踏。
这里有一些教程:
http://docs.python-guide.org/en/latest/dev/virtualenvs/
https://realpython.com/python-virtual-environments-a-primer/
https://docs.python.org/3/tutorial/venv.html
youtube 上也有很多教程。
祝你好运,编码愉快!
关于Linux 上的 Python 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42838828/