在linux上将Python 3.2升级到Python 3.4

在linux上将Python 3.2升级到Python 3.4,python,python-3.x,debian,apt,Python,Python 3.x,Debian,Apt,默认情况下,我在Raspbian Linux上安装了Python 3.2,但我想要Python 3.4(time.perf_counter,yield from,等等)。通过apt get安装python3.4没有问题,但是当我在shell中键入python3时,我仍然得到python3.2(因为,/usr/bin/python3仍然链接到它)。我应该更改符号链接吗,或者有更好的方法吗?您不能更改符号链接,因为可能存在依赖于python3作为python3.2或安装了特定库的Debian实用程序

默认情况下,我在Raspbian Linux上安装了Python 3.2,但我想要Python 3.4(
time.perf_counter
yield from
,等等)。通过apt get安装python3.4没有问题,但是当我在shell中键入python3时,我仍然得到python3.2(因为,
/usr/bin/python3
仍然链接到它)。我应该更改符号链接吗,或者有更好的方法吗?

您不能更改符号链接,因为可能存在依赖于python3作为python3.2或安装了特定库的Debian实用程序脚本。有许多命令行实用程序依赖于Debian上的特定版本和派生版本;例如,在我的Ubuntu上,在shebang上有
/usr/bin
python3
的脚本;在那里,
python3
意味着python3的操作系统保持当前状态。如果手动安装python3,操作系统不会认为它可以作为
python3
用于所有脚本。我的Ubuntu 14.10系统的一个例子:

[/usr/bin]% python3 bluez-list-devices  
[/usr/bin]% python3.4 bluez-list-devices  
[/usr/bin]% python3.3 bluez-list-devices
Traceback (most recent call last):
  File "bluez-list-devices", line 3, in <module>
    import dbus
  File "/usr/lib/python3/dist-packages/dbus/__init__.py", line 82, in <module>
    import dbus.types as types
  File "/usr/lib/python3/dist-packages/dbus/types.py", line 6, in <module>
    from _dbus_bindings import (
ImportError: No module named '_dbus_bindings'
[/usr/bin]% head -n 1 bluez-list-devices
#!/usr/bin/python3
[/usr/bin]%python3bluez列表设备
[/usr/bin]%python3.4 bluez列表设备
[/usr/bin]%python3.3bluez列表设备
回溯(最近一次呼叫最后一次):
文件“bluez列表设备”,第3行,在
导入DBU
文件“/usr/lib/python3/dist-packages/dbus/_-init___.py”,第82行,在
将dbus.types导入为类型
文件“/usr/lib/python3/dist packages/dbus/types.py”,第6行,在
从_dbus_绑定导入(
ImportError:没有名为“\u dbus\u bindings”的模块
[/usr/bin]%head-n 1 bluez列表设备
#!/usr/bin/python3
如果您自行决定更改符号链接,最坏情况下,您可以使系统不可旋转


只需使用
python3.4
作为命令,或使用虚拟环境。

您不能更改符号链接,因为可能存在依赖于
python3
作为python3.2或安装了特定库的Debian实用程序脚本。有许多命令行实用程序依赖于特定库Debian上的版本和派生版本;例如在我的Ubuntu上,
/usr/bin
中有脚本,shebang上有
python3
;在那里,
python3
意味着操作系统保持当前的python3。如果手动安装Python 3,操作系统认为它不是可用作
pytho的n3
适用于所有脚本。我的Ubuntu 14.10系统的一个示例:

[/usr/bin]% python3 bluez-list-devices  
[/usr/bin]% python3.4 bluez-list-devices  
[/usr/bin]% python3.3 bluez-list-devices
Traceback (most recent call last):
  File "bluez-list-devices", line 3, in <module>
    import dbus
  File "/usr/lib/python3/dist-packages/dbus/__init__.py", line 82, in <module>
    import dbus.types as types
  File "/usr/lib/python3/dist-packages/dbus/types.py", line 6, in <module>
    from _dbus_bindings import (
ImportError: No module named '_dbus_bindings'
[/usr/bin]% head -n 1 bluez-list-devices
#!/usr/bin/python3
[/usr/bin]%python3bluez列表设备
[/usr/bin]%python3.4 bluez列表设备
[/usr/bin]%python3.3bluez列表设备
回溯(最近一次呼叫最后一次):
文件“bluez列表设备”,第3行,在
导入DBU
文件“/usr/lib/python3/dist-packages/dbus/_-init___.py”,第82行,在
将dbus.types导入为类型
文件“/usr/lib/python3/dist packages/dbus/types.py”,第6行,在
从_dbus_绑定导入(
ImportError:没有名为“\u dbus\u bindings”的模块
[/usr/bin]%head-n 1 bluez列表设备
#!/usr/bin/python3
如果您自行决定更改符号链接,最坏情况下,您可以使系统不可旋转


只需使用
python3.4
作为命令,或者使用虚拟环境。

我将回答我自己的问题,因为我已经找到了问题的解决方案。在将debian版本设置为jessie之后,我以前在我的系统上运行过
apt get upgrade
。但这并没有取代python 3.2。取代它的是运行的
apt get dist upgrade
;之后
apt get autoremove
删除了python 3.2。我怀疑这可能是个问题,因为我没有安装任何外部库。

我将回答我自己的问题,因为我已经找到了解决问题的方法。我之前在设置了m之后在我的系统上运行了
apt get upgrade
y debian发布给jessie。但这并没有取代python 3.2。取而代之的是运行
apt get dist upgrade
;之后
apt get autoremove
删除了python 3.2。我怀疑这可能是个问题,因为我没有安装任何外部库。

为什么它们依赖
python3
作为python3.2?-python3.4是向后兼容的。它是向后兼容的,但有一些特定的库是为python3.2安装的,而不是为3.4安装的。Debian发行版也在内部使用Python。与python3.2链接的Python本机扩展不能与python3.4一起使用。为什么它们依赖于
python3
作为python3.2?-Python 3.4是向后兼容的。它是向后兼容的,但是有一些特定的库是为Python 3.2安装的,而不是为3.4安装的。Debian发行版也在内部使用Python。与Python 3.2链接的Python本机扩展不能与Python 3.4一起使用。编辑你的.bashrc并导出路径编辑你的.bashrc并导出路径h、 然后,您的系统被正确升级为使用Python 3.4。这不是您安装外部库的问题,而是
python3
symlink被处理并假定由Debian操作系统本身处理。是的,然后您的系统被正确升级为使用Python 3.4。这不是您安装外部库的问题也就是说,
python3
symlink是由Debian操作系统本身处理的。