iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么将项目完美迁移到Python3中
  • 649
分享到

怎么将项目完美迁移到Python3中

2023-06-02 01:06:50 649人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“怎么将项目完美迁移到python3中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么将项目完美迁移到python3中”吧!使用 2to3从几年前开始,Python 在你或许还

本篇内容主要讲解“怎么将项目完美迁移到python3中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么将项目完美迁移到python3中”吧!

使用 2to3

从几年前开始,Python 在你或许还不知道的情况下就已经自带了一个名叫 2to3 的脚本,它可以帮助你实现大部分代码从 Python 2 到 Python 3 的自动转换。

下面是一段使用 Python 2.6 编写的代码:

怎么将项目完美迁移到Python3中

对其执行 2to3 脚本:

怎么将项目完美迁移到Python3中

在默认情况下,2to3 只会对迁移到 Python 3 时必须作出修改的代码进行标示,在输出结果中显示的 Python 3 代码是直接可用的,但你可以在 2to3 加上 -w 或者 --write 参数,这样它就可以直接按照给出的方案修改你的 Python 2 代码文件了。

怎么将项目完美迁移到Python3中

2to3 脚本不仅仅对单个文件有效,你还可以把它用于一个目录下的所有 Python 文件,同时它也会递归地对所有子目录下的 Python 文件都生效。

使用 Pylint 或 Pyflakes

有一些不良的代码在 Python 2 下运行是没有异常的,在 Python 3 下运行则会或多或少报出错误,这种情况并不鲜见。因为这些不良代码无法通过语法转换来修复,所以 2to3 对它们没有效果,但一旦使用 Python 3 来运行就会产生报错。

要找出这种问题,你需要使用 Pylint、Pyflakes(或 flake8封装器)这类工具。其中我更喜欢 Pyflakes,它会忽略代码风格上的差异,在这一点上它和 Pylint 不同。尽管代码优美是 Python 的一大特点,但在代码迁移的层面上,“让代码功能保持一致”无疑比“让代码风格保持一致”重要得多。

以下是 Pyflakes 的输出样例:

怎么将项目完美迁移到Python3中

上面这些由 Pyflakes 输出的内容清晰地给出了代码中需要修改的问题。相比之下,Pylint 会输出多达 143 行的内容,而且多数是诸如代码缩进这样无关紧要的问题。

值得注意的是第 19 行这个容易产生误导的错误。从输出来看你可能会以为 cmp 是一个在使用前未定义的变量,实际上 cmp 是 Python 2 的一个内置函数,而它在 Python 3 中被移除了。而且这段代码被放在了 try 语句块中,除非认真检查这段代码的输出值,否则这个问题很容易被忽略掉。

怎么将项目完美迁移到Python3中

在代码迁移过程中,你会发现很多原本在 Python 2 中能正常运行的函数都发生了变化,甚至直接在 Python 3 中被移除了。例如 PySide 的绑定方式发生了变化、importlib 取代了 imp 等等。这样的问题只能见到一个解决一个,而涉及到的功能需要重构还是直接放弃,则需要你自己权衡。但目前来说,大多数问题都是已知的,并且有完善的文档记录。所以难的不是修复问题,而是找到问题,从这个角度来说,使用 Pyflake 是很有必要的。

修复被破坏的 Python 2 代码

尽管 2to3 脚本能够帮助你把代码修改成兼容 Python 3 的形式,但对于一个完整的代码库,它就显得有点无能为力了,因为一些老旧的代码在 Python 3 中可能需要不同的结构来表示。在这样的情况下,只能人工进行修改。

例如以下代码在 Python 2.6 中可以正常运行:

怎么将项目完美迁移到Python3中

类似 2to3 和 Pyflakes 这些自动化工具并不能发现其中的问题,但如果上述代码使用 Python 3 来运行,解释器会认为 CLOCK_SPEED.TICKS_PER_SECOND 是未被明确定义的。因此就需要把代码改成面向对象的结构:

怎么将项目完美迁移到Python3中

你也许会认为如果把 TICKS_PER_SECOND() 改写为一个构造函数(用 __init__ 函数设置默认值)能让代码看起来更加简洁,但这样就需要把这个方法的调用形式从 CLOCK_SPEED.TICKS_PER_SECOND() 改为 CLOCK_SPEED() 了,这样的改动或多或少会对整个库造成一些未知的影响。如果你对整个代码库的结构烂熟于心,那么你确实可以随心所欲地作出这样的修改。但我通常认为,只要我做出了修改,都可能会影响到其它代码中的至少三处地方,因此我更倾向于不使代码的结构发生改变。

到此,相信大家对“怎么将项目完美迁移到Python3中”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么将项目完美迁移到Python3中

本文链接: https://www.lsjlt.com/news/228322.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么将项目完美迁移到Python3中
    本篇内容主要讲解“怎么将项目完美迁移到Python3中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么将项目完美迁移到Python3中”吧!使用 2to3从几年前开始,Python 在你或许还...
    99+
    2023-06-02
  • 怎么将Django项目迁移到linux系统中
    这篇文章主要介绍“怎么将Django项目迁移到linux系统中”,在日常操作中,相信很多人在怎么将Django项目迁移到linux系统中问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么将Django项目迁移...
    99+
    2023-07-05
  • 怎么把应用迁移到Python3中
    这篇文章主要介绍“怎么把应用迁移到Python3中”,在日常操作中,相信很多人在怎么把应用迁移到Python3中问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么把应用迁移到Python3中”的疑惑有所帮助!...
    99+
    2023-06-16
  • 浅谈将three项目迁移至vue项目遇到的问题
    目录通过npm下载的three依赖无法正常使用导入模型的路径出现了问题3D场景渲染后没有进行销毁由于我的3D场景起初是自己为了测试搭建的,所以使用的是html + three,后来将...
    99+
    2024-04-02
  • 使用还原库将 Django 项目迁移到 Golang
    php小编鱼仔将向您介绍如何使用还原库将Django项目迁移到Golang。迁移项目可能是为了提高性能、扩展能力或者是出于其他技术需求。还原库是一种将现有项目从一种编程语言转换到另一种...
    99+
    2024-02-10
  • 如何解决将three项目迁移至vue项目遇到的问题
    这篇文章主要介绍了如何解决将three项目迁移至vue项目遇到的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过npm下载的three依赖无法正常使用在原项目中使用的是...
    99+
    2023-06-28
  • 将Django项目迁移到linux系统的详细步骤
    目录Django项目配置修改项目环境以及数据库打包linux系统中的配置1、python3的安装2、第二步就是数据库的配置项目整合与配置总结Django项目配置修改 我们需要把原先的Django项目进行修改才能更好地进行...
    99+
    2023-03-15
    Django项目迁移到linux Django项目迁移 Django项目迁移linux系统
  • 怎么在Linux中将MySQL迁移到MariaDB
    本篇内容介绍了“怎么在Linux中将MySQL迁移到MariaDB”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如果你想要将 MySQL 中...
    99+
    2023-06-16
  • 手把手教你将一个旧的大型项目迁移到 Py
    一年半前,我们就决定使用 Python 3 了。我们已经讨论了很长时间,现在是时候使用了!现在这个过程已经结束了,我们已经把生产环境的最后部署都迁移到了 Python 3整个代码库大约有 240 k 行,不包括空行和注解。这是一个基于 We...
    99+
    2023-01-31
    个旧 手把手教你 项目
  • 怎么将phpstudy中的mysql迁移到Linux系统中
    本篇文章为大家展示了怎么将phpstudy中的mysql迁移到Linux系统中,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。环境情况新主机系统平台:CentOS r...
    99+
    2024-04-02
  • 怎么将已有项目转移到云服务器
    要将已有项目转移到云服务器,可以按照以下步骤进行操作:1.选择合适的云服务提供商:根据项目的需求和预算选择合适的云服务提供商。2.创...
    99+
    2023-09-27
    云服务器
  • 怎么从AIX将数据库迁移到Linux Oracle中
    本篇内容主要讲解“怎么从AIX将数据库迁移到Linux Oracle中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么从AIX将数据库迁移到Linux Ora...
    99+
    2024-04-02
  • 怎么将Flex3应用程序迁移到Flex4beta
    小编给大家分享一下怎么将Flex3应用程序迁移到Flex4beta,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!将Flex3应用程序迁移到Flex4beta将Fl...
    99+
    2023-06-17
  • 怎么将spfile从ASM里迁移到文件系统
    本篇内容介绍了“怎么将spfile从ASM里迁移到文件系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成![...
    99+
    2024-04-02
  • 怎么将业务平滑迁移到云服务器
    将业务平滑迁移到云服务器需要经过以下步骤: 确定迁移目标:选择合适的云服务提供商,并确定迁移目标。 准备工作:备份数据、应用...
    99+
    2024-04-30
    云服务器
  • 怎么将项目上传到Gitee
    本篇内容介绍了“怎么将项目上传到Gitee”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建Gitee账户并登录首先,你需要在Gitee官网...
    99+
    2023-07-05
  • 怎么建立一个完美的 Python 项目
    怎么建立一个完美的 Python 项目,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。当开始一个新的 Python 项目时,大家...
    99+
    2024-04-02
  • Dropbox是怎么将接入层从Nginx迁移到Envoy的
    这篇文章主要介绍了Dropbox是怎么将接入层从Nginx迁移到Envoy的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在我们大...
    99+
    2024-04-02
  • 怎么将IDEA项目部署到Gitee
    本篇内容介绍了“怎么将IDEA项目部署到Gitee”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:创建Gitee账户和仓库在开始使用G...
    99+
    2023-07-05
  • 怎么将IJ项目提交到Gitee
    这篇文章主要介绍“怎么将IJ项目提交到Gitee”,在日常操作中,相信很多人在怎么将IJ项目提交到Gitee问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么将IJ项目提交到Gitee”的疑惑有所帮助!接下来...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作