gpt4 book ai didi

python - 如何在不破坏 apt 的情况下更新 Python 3 的替代品?

转载 作者:IT王子 更新时间:2023-10-29 00:05:31 26 4
gpt4 key购买 nike

前几天我决定让 python 命令默认启动 python3 而不是 python2。

所以我这样做了:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 3

$ sudo update-alternatives --config python

$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.5 3 auto mode
1 /usr/bin/python2.7 2 manual mode
2 /usr/bin/python3.5 3 manual mode

Press <enter> to keep the current choice[*], or type selection number: 0

这一切都奏效了。伟大的! :)

$ python -V
Python 3.5.2

但不久之后我就意识到在安装和删除 python 包时我已经破坏了 apt/aptitude,因为 apt 期望它出现 python2。

事情就是这样。

$ sudo apt remove  python-samba
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
samba-libs
Use 'sudo apt autoremove' to remove it.
The following packages will be REMOVED:
python-samba
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 5,790 kB disk space will be freed.
Do you want to continue? [Y/n]
(Reading database ... 187285 files and directories currently installed.)
Removing python-samba (2:4.3.11+dfsg-0ubuntu0.16.04.5) ...
File "/usr/bin/pyclean", line 63
except (IOError, OSError), e:
^
SyntaxError: invalid syntax
dpkg: error processing package python-samba (--remove):
subprocess installed pre-removal script returned error exit status 1
Traceback (most recent call last):
File "/usr/bin/pycompile", line 35, in <module>
from debpython.version import SUPPORTED, debsorted, vrepr, \
File "/usr/share/python/debpython/version.py", line 24, in <module>
from ConfigParser import SafeConfigParser
ImportError: No module named 'ConfigParser'
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
python-samba
E: Sub-process /usr/bin/dpkg returned an error code (1)

最终我猜想它需要 python2 作为默认值,所以我取消了如下更改:

$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.5 3 auto mode
1 /usr/bin/python2.7 2 manual mode
2 /usr/bin/python3.5 3 manual mode

Press <enter> to keep the current choice[*], or type selection number: 1

$ python -V
Python 2.7.12

然后 apt 再次工作

$ sudo apt remove  python-samba
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
samba-libs
Use 'sudo apt autoremove' to remove it.
The following packages will be REMOVED:
python-samba
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 5,790 kB disk space will be freed.
Do you want to continue? [Y/n]
(Reading database ... 187285 files and directories currently installed.)
Removing python-samba (2:4.3.11+dfsg-0ubuntu0.16.04.5) ...

所以我不得不将其默认设置为 python 2,但我在 python 3 中开发,因此希望我的系统在运行 python 和空闲时默认为 python 3。

谁能告诉我如何在不破坏 apt 的情况下实现这一目标?

我的系统是运行 Ubuntu 的 Raspberry Pi 3B:

Linux mymachine 4.4.38-v7+ #938 SMP Thu Dec 15 15:22:21 GMT 2016 armv7l armv7l armv7l GNU/Linux

(其实就是一个arm v8)

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"

最佳答案

根据 Debian 政策,python 指的是 Python 2,python3 指的是 Python 3。不要尝试在系统范围内更改此设置,否则您将面临这种情况您已经发现的麻烦。

虚拟环境允许您使用任何版本的 Python 和您需要的任何库运行独立的 Python 安装,而不会扰乱系统 Python 安装。

对于最近的 Python 3,venv 是标准库的一部分;对于旧版本,您可能需要安装 python3-venv 或类似的软件包。

$HOME~$ python --version
Python 2.7.11

$HOME~$ python3 -m venv myenv
... stuff happens ...

$HOME~$ . ./myenv/bin/activate

(myenv) $HOME~$ type python # "type" is preferred over which; see POSIX
python is /home/you/myenv/bin/python

(myenv) $HOME~$ python --version
Python 3.5.1

无论如何,通常的做法是为您从事的每个项目提供一个单独的环境;但是如果您希望它看起来像是在系统范围内有效地用于您自己的登录,您可以将激活节添加到您的 .profile 或类似的。

关于python - 如何在不破坏 apt 的情况下更新 Python 3 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43062608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com