移植一个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工具的历史移植呢,我会在另外一篇博客里面提到,啊,这个这篇博客我就不说明了啊,这边还是用传统的。软件的工程的方式来进行移植。

相关推荐
94621931zyn62 小时前
外观设置 - Cordova 与 OpenHarmony 混合开发实战
笔记·python
彼岸花开了吗2 小时前
构建AI智能体:六十五、模型智能训练控制:早停机制在深度学习中的应用解析
人工智能·python
BoBoZz192 小时前
3D 医学扫描同时显示患者的皮肤、骨骼的 3D 模型(通过等值面提取),以及三个正交切片
python·vtk·图形渲染·图形处理
一只小鱼儿吖3 小时前
从代理ip的底层逻辑探讨下如何选择代理ip商。
网络·python·网络协议·tcp/ip
山沐与山3 小时前
【设计模式】Python工厂模式与依赖注入:FastAPI的Depends到底在干嘛
python·设计模式·fastapi
写代码的【黑咖啡】3 小时前
Python常用数据处理库全解析
开发语言·python
2401_841495644 小时前
【Python高级编程】图着色动态可视化 APP
python·算法·matplotlib·tkinter·回溯法·图着色算法·动态可视化工具
南风微微吹4 小时前
【2026年3月最新】计算机二级Python题库下载安装教程~共19套真题
开发语言·python·计算机二级python
阿蔹4 小时前
Python基础语法三---函数和数据容器
开发语言·python