如何解决在Ubuntu 16.04 LTS中从Python 3.5升级到Python 3.6后出现的问题 其他信息:
我遵循此Medium article,将Ubuntu 16.04 LTS中的Python 3.5(具体来说,Python 3.5.2)升级到3.6(具体来说,Python 3.6.3)。
在那篇文章中,我跳过的第一步是...
通过SSH登录并更新所有已安装的软件包
首先,以root用户身份通过SSH登录到Ubuntu 16.04 VPS。ssh root@IP_Address -p Port_number
并更新所有已安装的软件包
我遵循其余步骤,在步骤4(方法1)和步骤5(方法2)之间,我选择了步骤4(方法1)。在所有步骤中,我什至没有遇到一个错误。现在,一般而言,我的机器没有任何副作用,但是从Python的角度来看,我遇到以下问题:
-
Python 3.5.2仍在我的计算机中:如果我键入
Python3
,则打开3.6.3,但如果我键入Python3.5
,则将打开3.5.2。因此,即使升级后,在我的计算机中安装Python 3.5.2是否正常? -
我无法使用
pip3
安装任何Python软件包/库,因为它仍然仅指向Python 3.5.2。 -
当我打开Jupyter笔记本时,它仍然指向Python 3.5.2(我没有使用
virtualenv
)如何将其指向Python 3.6.3?
其他信息:
- 以下是一些命令的输出:
$ python -V
Python 2.7.12
$ python3 -V
Python 3.6.3
$ python3.5 -V
Python 3.5.2
$ which python
/usr/bin/python
$ which python3
/usr/local/bin/python3
$ which python3.5
/usr/bin/python3.5
- 当我尝试使用
import
(指向3.5.2)v / sPython3.5
(指向3.6.3)Python3
时
$ python3.5
Python 3.5.2 (default,Jul 17 2020,14:04:10)
[GCC 5.4.0 20160609] on linux
Type "help","copyright","credits" or "license" for more information.
>>> import numpy
>>>
$ python3
Python 3.6.3 (default,Jul 15 2020,20:42:43)
[GCC 7.5.0] on linux
Type "help","credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
ModuleNotFoundError: No module named 'numpy'
>>>
-
pip
版本:
$ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip -V
pip 20.1.1 from /home/milan/.local/lib/python3.5/site-packages/pip (python 3.5)
$ pip3 -V
pip 20.1.1 from /home/milan/.local/lib/python3.5/site-packages/pip (python 3.5)
所以,运行pip3 install numpy
会为Python 3.5.2而不是Python 3.6.3安装numpy
- 在输入
Python3
时打开Python 3.6.3,所以我什至尝试使用$ python3 -m pip install numpy
命令来安装软件包,例如numpy
适用于我的Python 3.6.3,但出现以下错误:
Collecting numpy
Downloading https://files.pythonhosted.org/packages/22/e7/4b2bdddb99f5f631d8c1de259897c2b7d65dcfcc1e0a6fd17a7f62923500/numpy-1.19.1-cp36-cp36m-manylinux1_x86_64.whl (13.4MB)
100% |████████████████████████████████| 13.4MB 124kB/s
Installing collected packages: numpy
Exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/pip/basecommand.py",line 215,in main
status = self.run(options,args)
File "/usr/local/lib/python3.6/site-packages/pip/commands/install.py",line 342,in run
prefix=options.prefix_path,File "/usr/local/lib/python3.6/site-packages/pip/req/req_set.py",line 784,in install
**kwargs
File "/usr/local/lib/python3.6/site-packages/pip/req/req_install.py",line 851,in install
self.move_wheel_files(self.source_dir,root=root,prefix=prefix)
File "/usr/local/lib/python3.6/site-packages/pip/req/req_install.py",line 1064,in move_wheel_files
isolated=self.isolated,File "/usr/local/lib/python3.6/site-packages/pip/wheel.py",line 345,in move_wheel_files
clobber(source,lib_dir,True)
File "/usr/local/lib/python3.6/site-packages/pip/wheel.py",line 316,in clobber
ensure_dir(destdir)
File "/usr/local/lib/python3.6/site-packages/pip/utils/__init__.py",line 83,in ensure_dir
os.makedirs(path)
File "/usr/local/lib/python3.6/os.py",line 220,in makedirs
mkdir(name,mode)
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.6/site-packages/numpy'
You are using pip version 9.0.1,however version 20.2.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
那么,现在,如何在Ubuntu 16.04 LTS中安装Python 3.6.3的软件包/库?甚至有可能吗?
如何在不安装virtualenv
的情况下将Jupyter Notebook指向Python 3.6.3?当前,这是我的Jupyter Notebook的输出,这非常令人困惑:
1. from platform import python_version
2. print(python_version())
3.5.2
1. !python3 -V
Python 3.6.3
另外,在看到以上用于不同命令的输出后,我的系统现在是否混乱了(我是从系统角度来看)?我必须重新安装Ubuntu 16.04吗?
解决方法
- 更新二进制文件后,您应该运行以使用最新版本的二进制文件(python3.6而不是python3.5!)来刷新缓存
sudo ldconfig
- 之后,运行
python3 -m pip install --upgrade pip
为新python二进制文件确保正确的pip版本。
不,您的系统没有混乱,您不必重新安装Ubuntu。
问候
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。