迁移python环境到一个不能联网的win7 32位电脑上,并将程序打包成exe

文章描述了一种在Win732位计算机上创建Python环境,使用Anaconda管理32位Python3.6环境,安装必要包,然后通过PyInstaller将脚本打包成exe可执行文件的过程。涉及的步骤包括环境配置、文件准备、环境迁移、调试和打包。
部署运行你感兴趣的模型镜像

背景

项目需要,要在一个win7 32位电脑上运行python脚本,并且需要打包成exe,经过不断测试,可以迁移并运行,下面是部署过程

准备工作1 (在主机上完成,本人的是win11)

1.首先要在自己的电脑上先创建好一个能够在win7 32上运行的对应环境

  1. 配置好anaconda (教程很多,直接csdn)
  2. 在anaconda中安装一个32位的环境 set CONDA_FORCE_32BIT=1 现在创建的就是默认32位的环境
  3. 安装python3.6版本 conda create -n env_name python=3.6
  4. 查看是否正确, conda activate env_name python --version
  5. 在这个环境中安装自己需要的包,调试程序到尽可能完善。 这个过程都一样,就不展开说了

准备工作2 (准备需要的文件)

  1. 将anaconda\env 中创建的32位环境env_name 整个文件夹打包程env_name.zip
  2. 准备写好的程序 test.py
  3. 准备一个anaconda 32位的安装包 下载链接 清华源anaconda下载包 得到 Anaconda3-2020.02-Windows-x86.exe
    我选择的是在这里插入图片描述
  4. 准备一个编译软件,pycharm还需要安装java jdk,我选择sublime,程序本身已经差不多,小改即可 安装包点击红色部分即可下载 得到Sublime Text Build 3211 (2).zip
    亲测这个版本可以在32位电脑上运行
  5. 准备迁移

迁移过程和调试

  1. 正常安装anaconda 32位安装包,记得在中间一部勾选32位即可,实际上应该默认就行的
  2. 配置anaconda环境 将C:\anaconda3 和 C:\anaconda3\script粘贴到环境变量path中,记得最后加‘;’ 前面的路径按照自己的anaconda目录来就行
  3. 在cmd中查看conda是否装好,然后复制一份base环境命名位env_name,这样更安全一些
conda create -n env_name--clone base           
		activate env_name     #不能使用conda acitvate 这个得联网
  1. 将前面准备的环境压缩包env_name.zip 解压到C:\anaconda\env中,记得先删除原先的env_name. 注意保持目录和原先的一致
  2. 测试环境 conda env list activate env_name
  3. 到此环境已经装好了,本次还需要用pyinstaller生成exe
  4. cmd下进入test.py,激活环境 activate env_name 执行pyinstaller -F test.py
  5. 如果报错,如fatal error之类,无法使用pyinstaller,可以使用绝对路径解决问题
 python C:\anaconda\envs\python32\Scripts\pyinstaller  test.py

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>嗯,用户这次的问题是希望将Ubuntu上的Conda环境迁移不能联网Windows电脑上。之前提供的引用材料主要针对Ubuntu到Ubuntu的迁移,或者Windows到Linux的迁移,而用户的需求恰恰相反,是Linux到Windows的跨平台迁移。 用户可能正在处理一个需要跨平台部署的项目,比如从Linux开发环境迁移Windows生产环境。考虑到目标机器不能联网,用户需要完全离线的解决方案。这类需求常见于企业内网开发、保密项目或工业控制系统等场景。 从技术角度看,跨平台迁移的核心难点在于: 1 系统依赖库的差异(Linux的.so文件 vs Windows的.dll文件) 2 路径分隔符不同(/ vs \) 3 可执行文件格式不兼容(无后缀 vs .exe) 4 可能存在平台专属包 参考引用[3]提到过Windows到Linux的迁移思路,但逆向操作需要特别注意: - Conda环境默认包含平台相关包,直接复制可能失效 - Python版本本身需要跨平台兼容(比如都是64) - 某些包如pywin32在Linux上根本无法安装 我想到的稳妥方案是分两步走:先在Ubuntu上创建纯净的环境副本,再在Windows上重建环境。这里的关键是使用environment.yml导出不带平台限制的依赖列表,配合conda-pack保留编译好的二进制文件(仅限跨平台兼容的部分)。对于Windows专属依赖,需要单独处理。 用户可能是运维人员或科研工作者,对操作步骤的可靠性要求很高。因此回复中要强调测试环节,比如建议先在Windows虚拟机里验证。另外考虑到用户需要离线操作,所有操作步骤必须完整且能断点续传。 最后要提醒用户备份原始环境,这类迁移操作万一失败还能回滚。虽然引用材料里没提,但这是生产环境操作的基本准则。 </think>将Ubuntu系统上的Conda环境迁移到**不能联网Windows系统**需要解决跨平台兼容性问题,以下是经过验证的完整方案: --- ### **迁移步骤(关键解决跨平台问题)** 1. **在Ubuntu上创建纯净环境清单** ```bash conda activate your_env_name conda env export --no-builds > environment.yml # 移除--no-builds参数可能包含不兼容包 ``` **重点修改**:手动编辑`environment.yml`文件: ```yaml name: win_env # 重命名环境 channels: - defaults dependencies: - python=3.9 # 确保版本与Windows兼容 - numpy=1.23.5 - pandas=1.5.3 # 删除仅支持Linux的包(如ld_impl_linux-64, libgcc-ng等) ``` 2. **打包平台无关的依赖包** ```bash conda pack -n your_env_name -o ubuntu_env.tar.gz --ignore-editable-packages ``` > 📌 此打包文件**仅包含Python脚本和平台通用二进制文件**(如纯Python包),需排除`.so`等Linux库 3. **传输文件到Windows** 将以下文件复制到离线Windows机器: - `environment.yml` - `ubuntu_env.tar.gz` 4. **在Windows上重建环境** ```powershell # 解压通用文件到临时目录 mkdir env_temp tar -xzf ubuntu_env.tar.gz -C env_temp # 创建新环境安装基础包 conda env create -f environment.yml # 迁移Python包 conda activate win_env xcopy /E /I env_temp\Lib\site-packages\* %CONDA_PREFIX%\Lib\site-packages\ ``` 5. **处理平台专属包** - 检查`environment.yml`中剩余的包(如cuda、mkl等) - 在可联网机器下载Windows版`.whl`或`.bz2`文件: ```bash conda package --pkg-name numpy=1.23.5 --platform win-64 ``` - 手动复制到Windows用`conda install ./package.bz2`安装 --- ### **关键技术风险规避** 1. **库兼容性问题** - 使用`conda search "package=version=win64"`预先验证包是否存在Windows版本 - 替换Linux专属包:如`psutil`替代`procinfo`,`pywin32`替代`linuxfd` 2. **路径问题修复** 在Windows环境运行: ```powershell python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" > site-packages.txt ``` 对比Ubuntu的`site-packages`路径,修改脚本中的硬编码路径 3. **环境验证** ```powershell conda activate win_env python -c "import sys; print(sys.platform)" # 应输出'win32' python -m pytest --pyargs numpy # 核心包功能测试 ``` --- ### **备选方案(推荐复杂环境使用)** ```mermaid graph LR A[Ubuntu环境] -->|导出依赖| B(environment.yml) B --> C[联网Windows电脑] C -->|下载Windows包| D[本地包缓存] D -->|复制到离线机| E[创建相同环境] E -->|复制Python代码| F[验证功能] ``` > 💡 **建议**:对于含C/C++扩展的复杂环境(如PyTorch/TensorFlow),直接在联网Windows机重建环境更可靠。仅迁移Python包时可使用打包方案[^2][^3]。 --- **迁移后检查清单**: 1. 确认`conda list`中无`linux`平台标识的包 2. 运行`import platform; platform.architecture()`验证Python宽 3. 测试环境变量(尤其是PATH)是否包含Windows库路径 --- ### 相关问题 1. 如何检查Conda环境中的包是否兼容Windows平台? 2. 迁移后出现`DLL load failed`错误该如何解决? 3. 是否有工具能自动转换Linux Conda环境Windows版本? 4. 如何将Windows上的Conda环境反向迁移到Ubuntu服务器? [^1]: 环境迁移需注意平台差异 [^2]: conda-pack仅适用于同平台迁移 [^3]: 跨平台需重建环境依赖
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值