已升级Python;是否必须手动重新安装所有站点包?

2024-06-10 03:20:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近升级了我的Linux发行版。python3.5被python3.6取代。在

我用pip3安装的所有站点包仍然在/usr/lib/python3.5/site-packages目录中,Python现在找不到它们,因为它显然是在.../python3.6/site-packages中查找的。在

我看到目录的内容,我可以手动再次安装它们,但在我看来这不是正确的方法。我可以将内容移动到新目录,但同样,这在我看来也不正确。在

我该怎么处理?在

我应该在升级之前准备一个pip3 freeze列表吗?在

我试着搜索,但是关键词可能太笼统了,得到了很多不相关的答案。


Tags: 方法目录内容列表站点linuxlibpackages
2条回答

python3.5被python3.6取代。但是您仍然可以使用python3.5作为备份选项。在

如果你想使用python3.6,你必须重新安装python3.6的所有pip包。这是有道理的。在

假设你从2.7改为3.5。您需要分别保存这两个环境。因此3.6环境不同于3.5。在

一种快速的方法是对3.5安装pip freeze,然后为3.6安装这些依赖项。在

pip freeze > reqs.txt

升级

^{pr2}$

既然您已经没有这个选项了,首先尝试列出python3.5中的所有包

为此,您可以按照@kabanus的回答安装pip3.5。在

sudo apt-get install python3=3.5.1*
sudo python3.5 easy_install.py pip

另外,建议每个项目使用虚拟环境,这样您就可以为每个项目维护单独的环境。在

这会使您的重新安装更简单。签出the description。使用freeze你可以做一些类似的事情:

$ env1/bin/pip3 freeze > requirements.txt
$ env2/bin/pip3 install -r requirements.txt

通常推荐的方法是使用virtualenv作为站点包,这样就不会在安装区域乱扔垃圾,但它不会破坏我的东西。另一个选项是检查linux发行版是否有可用于正确检索的包,如:

^{pr2}$

这是我更喜欢的-而且可以用发行版升级。至于现在该怎么做,如果你真的不想重新安装所有的东西,你可以尝试cp /usr/lib/python3.5/site-packages/* /usr/lib/python3.6/site-packages。不同版本之间的差异并不是很大,所以我相信大多数软件包都能立即工作。您可能需要sed来将所有文件中的python3.5替换为python3.6忘记删除所有pyc文件。在

Python模块是自包含的,如果有东西坏了,它可以按包处理,而站点包是完全自包含的,所以您可以随时删除所有内容并重新安装。在

最后一点要注意的是,您可以尝试为linux安装pyton3.5/pip3.5,然后执行冻结操作。如果没有软件包,您可以手动安装(whl)或独立编译并正确配置站点路径。如果要将内容保存在全局站点包目录中或迁移到virtualenv这可能是最安全的选项。在

相关问题 更多 >