我正在将我的 Python 应用程序从 Python-2.6 迁移到 Python 3。我的应用程序是在支持 Python 2.6 的 Ubuntu 10.04 系统上开发的。现在我想让它在装有 Python 3 的 Ubuntu 14.04 上运行。我可以让 Python 应用程序完全独立于 Python-2 吗?
请分享您的观点/想法。
感谢你的帮助!!
谢谢,Mrudula
答案1
你能吗?当然。
试想一下,Python 2 将在 2020 年得到官方支持,并且可能非官方支持更长时间。你需要将其移植到 Python 3?你可以偷懒,让 2020 年的 mrudula 来解决这个问题。
我确信您知道 Python 2 和 Python 3 并不直接兼容。您可能需要进行一些更改才能在它们之间移植。有一些工具2to3
(包含在 Ubuntu 中)可以实现这一点很多更容易 — 至少更加自动化 — 但您可能仍在使用依赖于 Python 2.x 的库,而您需要替换这些库。
或者你可以继续使用 Python 2.7。
无论如何,我都经历过与你现在正在做的相同的过程,并且开发了几个小型 Django 应用程序。我可以建议的最大改进(如果你还没有这样做的话)是移至虚拟环境(venv
Py3k 中的模块)。将事物与系统分开使得许多被拔掉的头发重新长出来。
我建议以下行程:
- 在另一台机器上安装 14.04(虚拟机等)
创建一个 Python2为您的应用创建 virtualenv 并激活它。
sudo apt-get install python-virtualenv /usr/bin/virtualenv venv source ./venv/bin/activate pip install -U pip
安装任何需要知道您需要使用
pip
。如果您已经激活了虚拟环境,它将在本地安装它们,无需sudo
安装。- 获取物品在职的。这是一个反复运行的过程,直到它意识到你遗漏了某些东西。
- 当你确定你知道所有工作,并且你满足了所有要求时,将它们(和版本约束)转储到名为的文件中
requirements.txt
如果您对 Python 2 感到满意,那么您可以停在这里。将其迁移到真实服务器上(如果尚未迁移),然后将其提交requirements.txt
到版本控制中,以便您可以在将来需要时快速恢复环境。
如果你想继续使用 Python 3,那么路径就更清晰了:
删除你的 Python 2 虚拟环境,创建一个 Python3venv 并安装您的要求:
deactivate /usr/bin/python3 -mvenv venv pip install -U pip pip install -Ur requirements
释放
2to3
(和其他工具)到您的源上并手动完成移植。确保您已备份了已有的内容。它不是一个非常复杂的工具(请参阅2to3 --help
),但一般来说,这应该足以让您开始(请记住先备份,这将写入更改):2to3 -wf all .