如何将所有模块移动到 Python 的新版本(从 3.6 到 3.7)

How to move all modules to new version of Python (from 3.6 to 3.7)

我刚刚升级到 python 3.7,我发现我的所有模块都停留在以前的版本上。连 Django 都认不出来了。我该怎么做才能将所有内容转移到新版本?我现在有点迷茫,连新版本安装到哪里都不知道。

编辑:

当我执行 $ which python3.6 时,终端告诉我它不存在,但我在 /usr/local/lib/ 中有一个 python3.6 目录,其中安装了所有模块。

在同一目录 /usr/local/lib/ 我还有一个 python3.7 目录,其中安装了一些模块,但很多都丢失了。但是,当我在查找器中搜索文件 python3.7 时,它没有出现。当我做 $ which python3.7 时,路径是 /usr/local/bin,所以与目录的路径不同。

有人看到发生了什么并且知道我如何将所有模块转移到 python3.7 吗?

在某些情况下,我们没有机会在旧版本中pip freeze——因为我已经更新并且旧版本已被清除!我已经采取了一些措施来恢复一些包,但我不确定每个包都适用于此修复。(例如,用轮子构建的包)

  1. mv /your/path/to/python3.{6,7}/site-packages/
  2. 如果是安装在 venv 之外的软件包(在 /usr/local/~/.local 中),为了安全起见,请使用 get-pip.py 重新安装 pip。
  3. 如果您正在恢复 virtualenv。激活你的 virtualenv 并使用 my script

你的大部分包现在应该可以工作了。如果出现任何故障,pip reinstall 会起作用。如果您仍然希望它 100% 有效,pip freeze 现在。

即使删除了旧的python版本,也可以使用当前python版本的pip加上--path选项列出所有安装的模块以前的版本。

例如,将我的所有用户安装的 python 模块从 3.7 迁移到 3.8

pip freeze --path ~/.local/lib/python3.7/site-packages > requirements.txt
pip install --user -r requirements.txt

顺便说一句,我总是将 pip install--user 一起使用,并将系统范围的安装留给 linux 发行版的包管理器。

由于可能存在兼容性问题,重新安装所有软件包更安全:

pip3.6 list | awk '{print }' | xargs -I{} pip3.7 install {}

我不确定所有模块......但是如果你想专门在 python3.7 中安装模块,试试这个:

python3.7 -m pip install *module_name*

我有一个选择
(不确定是否在 Windows 10 之外工作)

我目前正在从 3.7 迁移到 3.8,我发现重新安装以前的库的方法是使用我拥有的脚本,该脚本通过 pip 安装更新所有包。 (假设您安装了新的 Python 版本作为您的主要版本)这将检查我拥有的所有软件包以及 updates/install 它们在新的 Python 版本中。

注意:我更喜欢运行命令行中的脚本

  1. 使用文件资源管理器转到您拥有脚本的文件夹;
  2. 单击路径框,输入“cmd”并按enter从您所在的文件夹打开命令行;
  3. 写“python name_of_your_script.py”然后按enter到运行命令。

剧本(改编自this solution):

import pkg_resources
from subprocess import call

packages = [dist.project_name for dist in pkg_resources.working_set]
[call("pip install " + name + " --upgrade") for name in packages]

我遇到了类似的问题,现在我从 python 3.7 升级到 python 3.8(新)

我安装了 Python 3.8,但是系统保留了 python37 子文件夹和已经安装的包(...\Python37-32\Lib\site-packages),即使创建了 Pyhton38 子文件夹,新 python.exe.

通常,您可以在新 Python 版本上继续使用旧库,因为现有的库安装文件夹已经在您的本地计算机系统路径 (*) 中注册。

尽管如此,我在使用某些库时遇到了问题(有些库在 Jupyter Notebook 中有效,但在 Spyder 中无效)。我尝试了其他人提出的迁移库的替代方案,但它没有用(也许我没有

所以我使用了暴力解决方案..一点也不优雅,但它有效:

  1. 从系统路径中删除旧的 python 版本文件夹,甚至永久删除文件夹本身。 文件夹:C:\Users\USERNAME\AppData\Roaming\Python\Python37 C:\Users\USERNAME\AppData\Local\Programs\Python\Python37

  2. 重新安装您需要的软件包,最好通过 Anaconda 提示。 python-mpip 安装library_name 要么 pip install --user --force-reinstall package_name 要么 pip install --user --force-reinstall package_name == specify_package_version

这些库将安装在 c:\users\USERNAME\anaconda3\lib\site-packages 并被您的新 python 版本识别。

(*)将文件夹添加到PATH:系统属性-->环境变量-->点击“路径”-->编辑-->添加文件夹名称)

旧版本 Python --运行 命令

pip freeze > requirments.txt

在 python 下载并安装更新版本.. 将 PATH 变量更改为新版本 和 运行 命令

pip install -r requirments.txt