【问题标题】:Python versions on LinuxLinux 上的 Python 版本
【发布时间】:2017-03-16 15:48:59
【问题描述】:

昨天我重新安装了我现在面临的类似问题的 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) 如何让 PyC​​harm 在 Python 3.6 上运行

4) Python 3.5 会导致安装模块出现问题,我在重新安装 Linux 之前遇到了同样的问题。这里有什么问题?

【问题讨论】:

  • 您可以使用 which python3.6 找到 Python 3.6 可执行文件的安装位置 - 而 python 3.5 可能是基本安装的一部分
  • 您检查过/usr/local/lib 中的内容吗?例如通过ls /usr/local/lib?
  • 对于 1),您可以尝试使用 find / -type d -name"*python3.6*" 搜索文件夹 python3.6 是否存在于任何地方吗?对于 2),可能是由于依赖关系,您的包管理器安装了 Python 3.5.2。对于 3) 和 4),您应该能够在系统上拥有多个版本的解释器,只要它们位于不同的文件夹中并且您设置了正确的环境。
  • 以下变量可能需要设置为您的 Python3.6 安装以使您的脚本正常工作:PYTHONHOME PYTHONPATH LDFLAGS LD_LIBRARY_PATH
  • 废话,我没有想到哪个python3.6,找到了文件夹,Pycharm现在似乎正在使用Python 3.6,谢谢但是,“dist包”仍然存在问题,它我可以在 python 3.5.2 上找到,但在 Python 3.6 上找不到。我确信这会导致一些问题,以前我使用 --target 安装模块,但是有很多问题,我。 e.与 MySQL。有没有办法一劳永逸地纠正这个问题并强制 PIP 在那里安装东西?

标签: python linux linux-mint


【解决方案1】:

命令的输出是什么: $ 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 会话,您将使用 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 上也有很多教程。

祝你好运,编码愉快!

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 2011-06-14
    • 2020-12-14
    • 2015-09-27
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多