移植一个Pycharm的复杂项目:

环境说明:

windows10,pycharm 4.2,


1 导出依赖清单(最重要)

pip freeze > requirement.txt

这里要注意,你先要确认你是已经进入和项目环境:

文件会生成在项目根目录:

altgraph==0.17.4

astroalign==2.5.1

comtypes==1.4.11

contourpy==1.2.1

cycler==0.12.1

Cython==3.0.11

ffmpeg-python==0.2.0

fonttools==4.51.0

future==1.0.0

imageio==2.35.1

importlib_metadata==8.5.0

importlib_resources==6.4.0

kiwisolver==1.4.5

lazy_loader==0.4

Markdown==3.7

matplotlib==3.8.4

mypy==1.18.2

mypy_extensions==1.1.0

networkx==3.2.1

Nuitka==2.4.8

numpy==1.26.4

opencv-python==4.9.0.80

Opy==1.1.28

ordered-set==4.1.0

packaging==24.0

pathspec==0.12.1

pefile==2024.8.26

pillow==11.3.0

pupil-labs-uvc==1.0.0

pyarmor==8.5.12

pyarmor.cli.core==6.5.3

pyinstaller==6.10.0

pyinstaller-hooks-contrib==2024.8

pyparsing==3.1.2

PyQt6-Qt6==6.7.2

PySide6==6.7.3

PySide6-stubs==6.7.3.0

PySide6_Addons==6.7.3

PySide6_Essentials==6.7.3

python-dateutil==2.9.0.post0

pywin32==311

pywin32-ctypes==0.2.3

qtgui==0.0.1

qtwidgets==1.1

scikit-image==0.24.0

scipy==1.13.0

sep==1.2.1

shiboken6==6.7.3

six==1.16.0

tifffile==2024.8.30

tinyaes==1.1.1

tomli==2.3.0

typing_extensions==4.15.0

uvc==0.4.5

zipp==3.20.2

zstandard==0.23.0


2 导出代码:

导出代码是有很多方式,一种方式最简单的就是直接是硬拷贝,那么硬拷贝的话呢可以做,但是它的呃适配到一个团队是不方便的。

实践的项目呢,因为是用了git版本来进行控制,那么一个比较好的方式就是将整个git的软件仓库版本直接上传到一个私有的代码管理器上,在管理服务器上,那么在这个的代码的管理服务器上,我们可以去打包,与历史分享这些代码。

具体如何打包的方式,我在另外一篇博客里面有提到,大家可以参考下面的博文。

Pycharm 中的本地git 如何关联到 gitee ?

https://blog.csdn.net/yellow_hill/article/details/156131772?spm=1011.2124.3001.6209


3 在新的电脑上安装:

3.1 源码获取

需要先按装git

然后,选择gitee仓库,克隆出来

因为是私有云,所以,需要登录执行

3.2 环境安装

3.2.1 python3.10 安装

这个链接是Python 3.10的最稳定版本

不要用这个版本,这是默认的最新版本,如果用这个,你原来的项目肯定会跑不起来。我现在之前的项目是在python3.10上构建,所以,so

一定要加到系统路径里面

C:\Users\Administrator>python --version

Python 3.10.11

3.2.1 环境重建

进入到刚才创建的环境:

PS D:\Prj_Astro\TelescopeDigtalEnhance> .venv\Scripts\activate

(.venv) PS D:\Prj_Astro\TelescopeDigtalEnhance>

现在,依据刚才依赖清单requirement.txt 文件里的模块list进行环境重建:

复制代码
pip install -r requirements.txt

Building wheels for collected packages: Nuitka, Opy, qtgui, qtwidgets, uvc

Building wheel for Nuitka (pyproject.toml) ... done

Created wheel for Nuitka: filename=nuitka-2.4.8-cp310-cp310-win_amd64.whl size=3402180 sha256=584e6cbe0f2bec6c066c983c0a62ac105474af48bfd0850132e41d4c524fbaf4

Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\8e\e9\fa\72c8020de5120e5bed46437500b0410be5602c83a7769d48d7

Building wheel for Opy (pyproject.toml) ... done

Created wheel for Opy: filename=opy-1.1.28-py2.py3-none-any.whl size=12809 sha256=ffdedb219a9fe3e752a707bee8a1034b6e5e0b33299da146d77e62a73b6206ab

Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\a1\91\3b\353f2770918c417df51d2d7eee5271c47e25206fda9fa6bf81

Building wheel for qtgui (pyproject.toml) ... done

Created wheel for qtgui: filename=qtgui-0.0.1-py3-none-any.whl size=10355 sha256=fa1f23031210bdcce46ca535555328d78915a577ee30de2ea91d38512d147a9b

Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\af\2a\fb\06e5a0a0aba542c8ff7f858d1308a645debabd8765a1aa5d97

Building wheel for qtwidgets (pyproject.toml) ... done

Created wheel for qtwidgets: filename=qtwidgets-1.1-py3-none-any.whl size=20598 sha256=88632a4da2ab7935d1261a2aa0a1832892ccc5e420a4666ffc46d6b94b966e69

Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\a7\bf\35\4c945098779dcd721f31f81fd02424fcc33f5a2e4328d83075

Building wheel for uvc (pyproject.toml) ... done

Created wheel for uvc: filename=uvc-0.4.5-py3-none-any.whl size=45237 sha256=5a0f38f56a6e1cff6a7baf9f2b4010a4e8cb0f3b8fe5e78fe9570415e83d11b3

Stored in directory: c:\users\administrator\appdata\local\pip\cache\wheels\2b\7d\0c\fe1993b889bd9121abd002e280f0e24f9691149cb9769ca7a0

Successfully built Nuitka Opy qtgui qtwidgets uvc

Installing collected packages: tinyaes, qtgui, pywin32, PyQt6-Qt6, pyarmor.cli.core, Opy, argparse, altgraph, zstandard, zipp, uvc, typing_extensions, tomli, six, shiboken6, pywin32-ctypes, pyparsing, pyarmor, pillow, pefile, pathspec, packaging, ordered-set, numpy, networkx, mypy_extensions, Markdown, kiwisolver, importlib_resources, future, fonttools, Cython, cycler, comtypes, tifffile, sep, scipy, qtwidgets, python-dateutil, PySide6_Essentials, pyinstaller-hooks-contrib, pupil-labs-uvc, opencv-python, Nuitka, mypy, lazy_loader, importlib_metadata, imageio, ffmpeg-python, contourpy, scikit-image, PySide6_Addons, pyinstaller, matplotlib, PySide6, astroalign, PySide6-stubs

Successfully installed Cython-3.0.11 Markdown-3.7 Nuitka-2.4.8 Opy-1.1.28 PyQt6-Qt6-6.7.2 PySide6-6.7.3 PySide6-stubs-6.7.3.0 PySide6_Addons-6.7.3 PySide6_Essentials-6.7.3 altgraph-0.17.4 argparse-1.4.0 astroalign-2.5.1 comtypes-1.4.11 contourpy-1.2.1 cycler-0.12.1 ffmpeg-python-0.2.0 fonttools-4.51.0 future-1.0.0 imageio-2.35.1 importlib_metadata-8.5.0 importlib_resources-6.4.0 kiwisolver-1.4.5 lazy_loader-0.4 matplotlib-3.8.4 mypy-1.18.2 mypy_extensions-1.1.0 networkx-3.2.1 numpy-1.26.4 opencv-python-4.9.0.80 ordered-set-4.1.0 packaging-24.0 pathspec-0.12.1 pefile-2024.8.26 pillow-11.3.0 pupil-labs-uvc-1.0.0 pyarmor-8.5.12 pyarmor.cli.core-6.5.3 pyinstaller-6.10.0 pyinstaller-hooks-contrib-2024.8 pyparsing-3.1.2 python-dateutil-2.9.0.post0 pywin32-311 pywin32-ctypes-0.2.3 qtgui-0.0.1 qtwidgets-1.1 scikit-image-0.24.0 scipy-1.13.0 sep-1.2.1 shiboken6-6.7.3 six-1.16.0 tifffile-2024.8.30 tinyaes-1.1.1 tomli-2.3.0 typing_extensions-4.15.0 uvc-0.4.5 zipp-3.20.2 zstandard-0.23.0

notice\] A new release of pip is available: 25.1.1 -\> 25.3 \[notice\] To update, run: python.exe -m p *** ** * ** *** ip install --upgrade pip


小结:

Ok,呃那么这次移植的小结呢我大概说明一下,首先就是我们要一开始在新建项目的时候,在本地就要新建一个git git的仓库管理啊,方便后面的移植,尤其是你要考虑给其他人来共享你的项目。那么git的构建的模式呢,其实也需要一个比较深度的考虑哈,我这边因为是简单的做一个移植的展示,所以就没有没有展示出来。那么怎么考虑呢?就git本身的你可能需要有一个开发的一个主线,就是我们说master一般是开发的主线,那么还有一些就是履历意史的主线。还有一些future的分支,那么就是你要进行一个版本的一个主要的规划哈,这个是git版本的控制软件或者说是仓库没法替代的。在git进行分发的时候,一个比较重要的方面,就是做一个硬拷贝,因为git有可能你有误操作啊,所以硬拷贝在。嗯一个大项目移植之前是必须的啊,我们先做硬拷贝。那么硬拷贝完了之后呢,我们可以用git加上远程的这样的一个私有服务器来进行这个移植工作啊,假设你从一个机器移植到另一个机器。呃用硬稿配是一个方式,但是这样的话你会丧失了很多一个原始配置的这样的一个路径啊会遗漏。最好的方式就是在新机器上进行一个完整的全新的这样的一个构建啊。那么在新机上进行构建,如果有远程的仓库能够实施的话,就可以帮你梳理清楚之前开发,或尤其是在开发路径上有可能造成。的各种各样的一个垃圾文件呀,临时文件呀,配置文件啊等等,这些都可能。因为比如我这个项目,如果是我要硬拷贝的话,大概有1~2个g,然后如果我只是用git用这个远端来进行。分发到一个新机器上的话,只有几十兆的这样的一个内存占用哈,所以是呃我们应该采取一个远程的方式。远程构建的另一个方式是在你的比较复杂的项目里面,你各种库生成的用户路径,目录等等都会在新的配置下进行验证啊,这相当于是半个测试过程,那么还有一些就是比如说自动化测试的目录,还有自动化测试的一些图片什么什么的,这些呢你当然是可以用拷贝的方式直接拷贝过来,呃但是。嗯是不要加到仓库里面的啊。然后因为ai工具的产生,所以比如说用trade的去trae的时候呢,那么有很多呃我ai开发的历史啊history,那么这个里面其实也有一个移植工作,那么这个ai工具的历史移植呢,我会在另外一篇博客里面提到,啊,这个这篇博客我就不说明了啊,这边还是用传统的。软件的工程的方式来进行移植。

相关推荐
火车叼位5 小时前
也许你不需要创建.venv, 此规范使python脚本自备依赖
python
火车叼位5 小时前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
孤狼warrior5 小时前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
Katecat996635 小时前
YOLO11分割算法实现甲状腺超声病灶自动检测与定位_DWR方法应用
python
玩大数据的龙威6 小时前
农经权二轮延包—各种地块示意图
python·arcgis
ZH15455891316 小时前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
belldeep6 小时前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
喵手6 小时前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储
喵手6 小时前
Python爬虫实战:京东/淘宝搜索多页爬虫实战 - 从反爬对抗到数据入库的完整工程化方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·京东淘宝页面数据采集·反爬对抗到数据入库·采集结果csv导出
B站_计算机毕业设计之家6 小时前
猫眼电影数据可视化与智能分析平台 | Python Flask框架 Echarts 推荐算法 爬虫 大数据 毕业设计源码
python·机器学习·信息可视化·flask·毕业设计·echarts·推荐算法