1、默认python3、ipython3、pip的路径
name@host:~$ which python
/usr/bin/python
name@host:~$ which python3
/usr/bin/python3
name@host:~$ which pip
/usr/local/bin/pip
name@host:~$ which pip3
/usr/local/bin/pip3
name@host:~$ which ipython3
/usr/local/bin/ipython3
name@host:~$ which ipython
/usr/local/bin/ipyth
2、安装之后的路径
/usr/local/python3.7/bin/pip3
/usr/local/python3.7/bin/pip3.7
/usr/local/python3.7/bin/python3
/usr/local/python3.7/bin/python3.7
3、编译安装python3.7
参考链接:https://ywnz.com/linuxjc/3159.html
https://www.jianshu.com/p/7d32fba1121a
官网下载:https://www.python.org/downloads/ file中选择 Gzipped source tarball
比如:压缩包名字是Python-3.7.0.tgz
解压:
sudo tar -xzf Python-3.7.0.tgz
可以 -C /opt/ 指定解压路径
编译
cd Python-3.7.0
./configure --prefix=/usr/local/python3.6 --enable-optimization
--prefix 是预期安装目录,
--enable-optimizations
是优化选项(LTO,PGO 等)加上这个 flag 编译后,性能有 10% 左右的优化(如果没记错的话),但是这会明显的增加编译时间。不过关于 LTO 和 PGO 其实不在今天文章的讨论范围内,建议感兴趣的可以看看
GCC 中 LTO 的具体实现https://gcc.gnu.org/onlinedocs/gccint/LTO-Overview.html
安装
sudo make
sudo make install
报错以及解决
1. configure: error:in ‘路径名’:
no acceptable C compiler found in $path
解决:
sudo apt-get upgrade
sudo apt-get install build-essential
2. Python build finished successfully!
The necessary bits to build these optional modules were not found:
_ctypes
3. zipimport.ZipImportError: can't decompress data; zlib not available
解决: sudo apt install zlib*
参考:https://blog.csdn.net/blueheart20/article/details/72827666
4. ModuleNotFoundError: No module named '_ctypes'
Makefile:1130: recipe for target 'install' failed
make: *** [install] Error 1
解决:
解决:安装模块
sudo apt-get update
sudo apt dist-upgrade
sudo apt install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt install libssl-dev openssl
sudo apt install libffi-dev
---------------------
原文:https://blog.csdn.net/wang725/article/details/79905612
参考链接:http://www.cnblogs.com/abeen/p/9355389.html
4、安装完成
The directory '/home/name/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/name/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Looking in links: /tmp/tmp4crntzmm
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-19.0.3 setuptools-40.8.0
链接处理
建立软连接:
ln -s /usr/local/python3.7/bin/python3 /usr/bin/python3
这样建立之后,pip3 也会自动配置为python3.7的
下面的问题出现后,将/usr/bin/python3有恢复成了原来的。
建立了python3.7的软连接
ln -s /usr/local/python3.7/bin/python3 /usr/bin/python3
建立了pip3.7的软连接
sudo ln -s /usr/local/python3.7/bin/pip3 /usr/local/bin/pip3.7
对于ipython3
1.查看到 ipython3 命令在是 /usr/local/bin/ipython3
2.cat /usr/local/bin/ipython3
内容如下
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from IPython import start_ipython
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(start_ipython())
复制一份命名为 /usr/local/bin/ipython3.7
打开,将第一行改为 #!/usr/bin/python3.7
试启动:
ipython3.7
报错
Traceback (most recent call last):
File "/usr/local/bin/ipython3.7", line 7, in
from IPython import start_ipython
ModuleNotFoundError: No module named 'IPython'
安装 sudo pip3.7 search ipython
成功
ipython3.7
/usr/local/python3.7/lib/python3.7/site-packages/IPython/core/history.py:226: UserWarning: IPython History requires SQLite, your history will not be saved
warn("IPython History requires SQLite, your history will not be saved")
Python 3.7.3 (default, May 20 2019, 15:29:59)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
这样 python3.7 就是python3.7的了
这样 pip3.7 就是python3.7的了
5、系统问题:
1.执行apt update 时报错, 因为python版本替换了
报错如下:
name@host:~$ sudo apt update
命中:1 http://archive.ubuntukylin.com:10006/ubuntukylin xenial InRelease
命中:2 http://archive.canonical.com/ubuntu bionic InRelease
命中:3 http://mirrors.aliyun.com/ubuntu bionic InRelease
命中:4 http://mirrors.aliyun.com/ubuntu bionic-security InRelease
获取:5 https://deb.opera.com/opera-stable stable InRelease [2,591 B]
已下载 2,591 B,耗时 2秒 (1,552 B/s)
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 8, in
from CommandNotFound.db.creator import DbCreator
ModuleNotFoundError: No module named 'CommandNotFound'
正在读取软件包列表... 完成
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code
同时ubuntu默认终端打不开,还是因为python的版本替换
解决:将/usr/bin/python3下的软连接恢复成原来的。
2.出现问题:
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
原因:有 1 个软件包没有被完全安装或卸载。
解决: sudo apt --fix-broken install
6、最后sudo apt autoremove清除多余的包