Python项目环境迁移的三种方法

 更新时间:2025年10月11日 10:33:33   作者:qyhua  
本文介绍了如何将Python虚拟环境中的包导出为wheel文件(whl),以便于在其他电脑上快速安装,包括使用pipfreeze生成requirements.txt,pipdownload下载包并pipwheel打包成wheel文件,以pytorch为例演示了具体操作步骤,需要的朋友可以参考下

在开发 Python 项目时,我们经常需要将项目环境从一台电脑迁移到另一台电脑。本教程将介绍三种不同的方法来实现这一目标,每种方法都有其特定的使用场景。

方法一:使用 requirements.txt

这是最简单和最常用的方法,适用于有网络连接的情况。

步骤:

在原始电脑上导出依赖包:

pip freeze > requirements.txt

requirements.txt 文件传输到新电脑。

在新电脑上安装依赖包:

pip install -r requirements.txt

优点:

  • 简单快捷
  • 保证版本一致性

缺点:

  • 需要网络连接
  • 可能需要较长时间下载

方法二:下载 wheel 文件

当新电脑没有网络连接时,这种方法很有用。

步骤:

在原始电脑上运行以下脚本:

#!/bin/bash
 
# 创建一个目录来存储 wheel 文件
mkdir python_packages
 
# 创建 requirements.txt 文件
pip freeze > requirements.txt
 
# 下载 wheel 文件
pip download -r requirements.txt -d python_packages
 
# 可选:创建一个压缩文件
tar -czvf python_packages.tar.gz python_packages

执行后导出成功,如下图

导出成功的whl文件

python_packages 目录(或压缩文件)和 requirements.txt 传输到新电脑。

在新电脑上安装依赖包:

pip install --no-index --find-links=python_packages -r requirements.txt

优点:

  • 不需要网络连接就可以在新电脑上安装
  • 确保版本完全一致

缺点:

  • 需要在原始电脑上下载所有包,可能耗时
  • 占用较大存储空间

方法三:从本地已安装的包创建 wheel 文件

当原始电脑已经安装了所需的包,并且想避免重新下载时,这种方法最为高效。

步骤:

在原始电脑上运行以下 Python 脚本:

import os
import sys
import shutil
import subprocess
from pathlib import Path
import pkg_resources
 
def create_wheel(package_name, output_dir):
    try:
        subprocess.run([sys.executable, "-m", "pip", "wheel", 
                        "--no-deps", 
                        "--wheel-dir", output_dir, 
                        package_name], 
                       check=True)
        print(f"Successfully created wheel for {package_name}")
    except subprocess.CalledProcessError:
        print(f"Failed to create wheel for {package_name}")
 
def main():
    # 创建输出目录
    output_dir = Path("python_packages")
    output_dir.mkdir(exist_ok=True)
 
    # 获取已安装的包
    installed_packages = [dist.project_name for dist in pkg_resources.working_set]
 
    # 为每个包创建 wheel 文件
    for package in installed_packages:
        create_wheel(package, str(output_dir))
 
    # 创建 requirements.txt 文件
    with open("requirements.txt", "w") as f:
        for package in installed_packages:
            f.write(f"{package}=={pkg_resources.get_distribution(package).version}\n")
 
    print("Process completed. Check the 'python_packages' directory for wheel files.")
    print("A 'requirements.txt' file has been created with the list of installed packages.")
 
if __name__ == "__main__":
    main()

将生成的 python_packages 目录和 requirements.txt 文件传输到新电脑。

在新电脑上安装依赖包:

pip install --no-index --find-links=python_packages -r requirements.txt

优点:

  • 不需要重新下载已安装的包
  • 确保提取的是与当前环境完全匹配的包版本
  • 节省时间和带宽

缺点:

  • 可能无法处理某些需要在安装时编译的包
  • 需要注意操作系统和 Python 版本的兼容性

注意事项

  1. 在使用这些方法时,请确保原始电脑和新电脑的 Python 版本兼容。
  2. 如果使用虚拟环境(推荐),请确保在执行这些操作前激活正确的虚拟环境。
  3. 对于一些特殊的包(如需要编译的科学计算库),可能需要在新电脑上额外进行一些设置。

通过选择适合您具体情况的方法,您可以轻松地将 Python 项目环境从一台电脑迁移到另一台电脑。这不仅能节省时间,还能确保在不同环境中保持一致的开发体验。

以上就是Python项目环境迁移的三种方法的详细内容,更多关于Python项目环境迁移的资料请关注脚本之家其它相关文章!

相关文章

  • Django使用django-simple-captcha做验证码的实现示例

    Django使用django-simple-captcha做验证码的实现示例

    这篇文章主要介绍了Django使用django-simple-captcha做验证码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python3匿名函数lambda介绍与使用示例

    Python3匿名函数lambda介绍与使用示例

    这篇文章主要给大家介绍了关于Python3匿名函数lambda与使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • 一文带你探寻Python中的装饰器

    一文带你探寻Python中的装饰器

    这篇文章就来和大家详细讲一讲Python中装饰器的相关知识,文中的示例代码讲解详细,对我们深入了解Python有一定的帮助,感兴趣的可以了解一下
    2023-04-04
  • Python实现的数据结构与算法之快速排序详解

    Python实现的数据结构与算法之快速排序详解

    这篇文章主要介绍了Python实现的数据结构与算法之快速排序,详细分析了快速排序的原理与Python实现技巧,需要的朋友可以参考下
    2015-04-04
  • 使用Python OpenCV为CNN增加图像样本的实现

    使用Python OpenCV为CNN增加图像样本的实现

    这篇文章主要介绍了使用Python OpenCV为CNN增加图像样本的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 利用Python实现添加或读取Excel公式

    利用Python实现添加或读取Excel公式

    Excel公式是数据处理的核心工具,从简单的加减运算到复杂的逻辑判断,掌握基础语法是高效工作的起点,下面我们就来看看如何使用Python进行Excel公式的添加与读取吧
    2025-03-03
  • TensorFlow模型保存和提取的方法

    TensorFlow模型保存和提取的方法

    这篇文章主要为大家详细介绍了TensorFlow模型保存和提取的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python协程asyncio模块的演变及高级用法

    Python协程asyncio模块的演变及高级用法

    网上很多关于Python协程asyncio模块的教程都是基于老版Python的, 本文将以对比方式展示新老Python版本下协程的写法有什么不同并总结了asyncio的一些高级用法, 包括如何获取协程任务执行结果,gather和wait方法的区别以及如何给任务添加回调函数。
    2021-05-05
  • Python基于动态规划算法计算单词距离

    Python基于动态规划算法计算单词距离

    这篇文章主要介绍了Python基于动态规划算法计算单词距离的方法,实例分析了Python动态规划算法的实现与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • python实现单机五子棋对战游戏

    python实现单机五子棋对战游戏

    这篇文章主要为大家详细介绍了python实现单机五子棋对战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04

最新评论