在不更改$ PATH变量的情况下更改默认python?

时间:2017-11-20 12:13:47

标签: python

我想更改我使用的默认python版本,而不会影响任何其他默认值。只要在给定位置只有python可执行文件,将python路径附加到$PATH环境变量只会实现,如果我想使用/usr/bin版本({{{ 1}})。

我知道理论上我可以在我选择的其他文件夹中创建一个符号链接,但这不是很优雅。

有没有其他方法可以更改默认的python(比如python使用的优秀环境变量优先于export PATH=\usr\bin:$PATH环境变量)?

3 个答案:

答案 0 :(得分:2)

如果您希望在shell中键入python时获得特定版本的Python解释器,那么就没有环境变量可以帮助您。它是shell决定要使用的解释器的二进制文件,并且在它生成时它不能被交换到另一个解释器。您可以通过以下方式解决此问题:

  • 正如你所说,在某个地方制作符号链接。它不需要位于系统目录中,许多用户在$HOME/bin中都有类似$PATH的内容(某些Linux发行版默认执行此操作)。
  • 制作alias(例如,在.bashrc或类似内容中)。
  • 制作function(与之前相同)。您甚至可以对其进行编程以接收一些参数,该参数决定您要使用哪个版本的解释器,或者如您所建议的那样使用某个环境变量的值。
  • 在支持它的发行版中,设置alternative
  • 使用您想要的解释器创建virtual environment并在该环境中工作。

无论如何,您应该考虑以下几点:

  • 如另一个答案所述,在系统范围内更改Python解释器的版本可能会破坏事物。特别是,将命令python从Python 2切换到Python 3(或其他方式)几乎可以保证会造成很多麻烦。上面的一些解决方案可能不受此影响(例如.bashrc中的设置和别名或功能不应影响其他脚本,除非source d),但您应该小心。
  • 这里常见的缺陷是更改python命令不会更改每个基于Python的命令。例如,如果您使用IPython并只键入ipython,则需要确保启动正确的解释器和脚本。根据您的具体情况,在这个意义上可能需要考虑一些工具。

虚拟环境可能是最简单,最干净的解决方案,因为它是针对特定问题而设计的(即使有时会出现问题,例如,如果您运行ipython但是您忘记在您的环境中首先安装它虽然如果你想将它用于每个 shell会话,那么它将获得系统范围的一个,但它可能不那么方便。

答案 1 :(得分:1)

一般来说,Python本身并没有提供任何方法来做到这一点。 Python启动后,已经有一个特定的版本在运行,并且它无法动态更改为不同的版本。

您的操作系统可能提供某种方式来选择默认的哪个版本的Python(例如Gentoo Linux上的eselect python),但无法说明这是否属于您的情况不知道你正在使用什么操作系统。如果您的操作系统没有提供类似的功能,则可以创建自己的脚本来设置和更改默认的Python版本。

答案 2 :(得分:1)

根据您使用的操作系统,您可以使用alternatives更改默认设置。

https://wiki.debian.org/DebianAlternatives https://linuxconfig.org/how-to-switch-between-python-versions-on-fedora-linux

因此,要更改默认的Python,您可以执行类似

的操作
alternatives --install /usr/bin/python python /usr/bin/python3.6 1

请注意,这可能会破坏很多东西,因为操作系统很可能依赖于Python的版本。