繁体   English   中英

如何将所有模块移动到新版本的 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

即使删除了旧的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

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

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

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

在旧版本的 Python 中 --运行命令

pip freeze > requirments.txt

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

pip install -r requirments.txt 

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

  1. mv /your/path/to/python3.{6,7}/site-packages/
  2. 如果情况是安装在 venv 之外的软件包(在/usr/local/~/.local ),请使用get-pip.py重新安装 pip ,以确保安全。
  3. 如果您正在恢复 virtualenv。 激活您的 virtualenv 并使用我的脚本

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

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

python3.7 -m pip install *module_name*

我有一个替代方案
(不确定是否适用于Windows 10之外)

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

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

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

脚本(改编自此解决方案):

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 (new)

我安装了 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 install library_name或 pip install --user --force-reinstall package_name或 pip install --user --force-reinstall package_name == 指定_package_version

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM