小编Mos*_*she的帖子

更改 Python 的默认版本会破坏 Ubuntu 20.04

我正在创建Ubuntu 20.04的 AMI (Focal Fossa),并且我希望默认的 Python 版本为 3.6。

我安装了 Python 3.6,也是正确的 pip,然后像这样设置替代方案:

update-alternatives --install \
  /usr/bin/python3 \
  python3 \
  /usr/bin/python3.6 \
  10
Run Code Online (Sandbox Code Playgroud)

但是后来我遇到了许多与CPython包相关的问题,例如python3-apt(apt_pkg, apt_inst),netifaces,可能还有更多我还没有发现。

它们都位于/usr/lib/python3/dist-packages并且包名称采用以下格式:

{name}.cpython-38-x86_64-linux-gnu.so
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为 Ubuntu 20.04 的默认 Python 版本是 Python 3.8。

谷歌搜索的直接解决方案是像这样链接名称:

ln -s {name}.cpython-38-x86_64-linux-gnu.so {name}.so
Run Code Online (Sandbox Code Playgroud)

IE:

ln -s apt_pkg.cpython-38-x86_64-linux-gnu.so apt_pkg.so
ln -s netifaces.cpython-38-x86_64-linux-gnu.so netifaces.so
Run Code Online (Sandbox Code Playgroud)

我尝试apt install --reinstall python3-apt在默认 Python 版本为 3.6 时重新安装相关的包 ( ),但它不起作用,而这种链接的解决方案*.so文件的不可扩展!

有没有办法让 Python 3.6 与系统的默认 CPython 包一起工作?

ubuntu alternatives python3

6
推荐指数
2
解决办法
906
查看次数

使用 sed 包装字符串的第一个字符

说我有一个字符串foobar 如何在[f]oobar不专门替换f为的情况下轻松生成类似的内容[f]

用例:我接受用户输入的进程名称,我想显示进程详细信息,同时消除grep.

sed text-processing

5
推荐指数
1
解决办法
1200
查看次数

字符串和文件之间的差异

基本上我想检查前后相同文件的差异 sed

试图运行:

diff /opt/postTrades.sh <<< $(sed 's/1\ MIN/10\ MIN/g' /opt/postTrades.sh)
Run Code Online (Sandbox Code Playgroud)

diff <<< $(sed 's/1\ MIN/10\ MIN/g' /opt/postTrades.sh) < /opt/postTrades.sh 
Run Code Online (Sandbox Code Playgroud)

diff <<< (sed 's/1\ MIN/10\ MIN/g' /opt/postTrades.sh) < /opt/postTrades.sh
Run Code Online (Sandbox Code Playgroud)

总是得到:

diff: missing operand after '/opt/postTrades.sh'
diff: Try 'diff --help' for more information.
Run Code Online (Sandbox Code Playgroud)

正确的做法是什么?谢谢。

diff here-document here-string

3
推荐指数
1
解决办法
1950
查看次数