设为首页
收藏本站
开启辅助访问
全部
问与答
创意
技术
酷工作
生活
交易
节点
飞墙
Follow
明白贴
工算小助手
登录
注册
飞社-令人惊奇的创意工作者社区-
›
首页
›
程序员
›
关于 Python 环境可复现性请教
FSHEX=FIND+SHARE+EXPRESS
飞社-令人惊奇的创意工作者社区- 是一个关于发现分享表达的地方
现在登录
没有账号?
立即注册
推荐主题
›
结婚前隐瞒了我爸曾经因为肇事逃逸坐过几个
›
问一下军队文职是不是骗局?
›
咨询大家一个职场陷阱,如何破局
›
为什么绝大部分网站,用户光标 hover 按钮
›
AI 测试 "我想洗车,离洗车店只有 50 米,
今日热议主题
成都这个联通宽带套餐怎么样?
[日本] 日本超大手企业、多 IT 岗位推荐
远程 Unity3D 客户端开发工程师
很好奇,国内的公务员事业单位面试存不存在
冬泳怪鸽的抖音专访视频看了吗,感觉做的挺
[软著通] 一句项目描述,就能生成软著申请
我做了一个 Seedream 5.0 AI 的网站,欢迎
稳钱 07 丨常见理财工具优缺点全解析
腾讯云海外客户云原生技术支持工程师(成都/
关于多抓鱼小程序技术栈的咨询
显示全部
|
最新评论
21 条回复
·
2357 次点击
11#
xgq89757
楼主
初学
2025-8-15 11:35:06
@blackshadow 还有就是项目是在某些版本冲突下稳定运行的,-r 构建就会报错退出,只能先注释掉冲突的包,最后在单独 install
12#
JoeJoeJoe
初学
2025-8-15 11:35:30
@xgq89757 #9 还有这种情况呢? 我倒是一直没注意过, 我一直是能跑就行. ps: 要是怕这个的话, 直接把三方依赖的包放到共享文件夹吧, 指定一下 python 包路径
13#
xgq89757
楼主
初学
2025-8-15 11:36:46
@JoeJoeJoe 所以暂时的方法是打成了基础镜像。
14#
killva4624
小成
2025-8-15 11:37:03
@xgq89757 #9 pip install -r 为啥不会一样,没指定版本号吗?
15#
maocat
小成
2025-8-15 11:43:07
合理怀疑 requirements.txt 里面没有吧对应的的包的关联依赖包拉进来, 试一试 pip freeze 全量输出
16#
xgq89757
楼主
初学
2025-8-15 11:44:50
@killva4624 全指定了版本号的,清单是从当前稳定运行的环境中 pip list --format=freeze 拉下来的, 后续就是想通过这个清单复现环境,但是有些包会出现版本冲突或者构建下来的环境和清单不一致。
17#
xgq89757
楼主
初学
2025-8-15 11:51:05
@iorilu 目前就是这样的,运行环境打包成基础镜像,交付打包时再将混淆的工程打包进镜像。但是遇到不允许容器化部署的客户就比较麻烦了,要根据客户的环境做离线包,客户是金融、银行之类的基本都没有公网。
18#
blackshadow
小成
2025-8-15 12:01:19
@xgq89757 感觉最好的办法就是你上面的了,一是容器化部署;二是全部的依赖包都本地保存离线版,环境里全部离线安装。 感觉你这个要求和我们之前很像,我们之前给客户装环境完全内网,rpm 服务都是自己搭建,找个大硬盘里面装了所有需要的离线包。
19#
Mithril
小成
2025-8-15 12:10:33
虽说也推荐你用 uv ,但你这个环境和要求,光靠 uv 是没法彻底解决的。你要考虑的是依赖的可信与供应链管理,而不简单的一个 lock 。 正常做法是,内网搭建 pip 的镜像服务,并且配置多个 pip 仓库。至少三个,dev ,integration ,release 。只有 dev 是联通外网的 mirror ,其他两个是本地库。 然后你开发的时候 pip 指向 dev 库,发版的时候,QA 和测试用 integration 库。这时候把你需要的指定版本的所有依赖从 dev 提升复制到 integration 库内。 当 QA 和测试完成,再次把这些依赖到 release 库内。作为最终 release 的二进制依赖,同时对依赖进行漏洞检查和制做 SBOM 。 当然你可以根据你们的要求自己调整一下,可能也用不到这么严格的流程。但本质上为了避免 FOSS 的供应链风险,你应该自己保留所有依赖的二进制及其代码以供审查,并且可以完全从本地构建你的产品。 别忘了之前 npm 下毒的事。
20#
xgq89757
楼主
初学
2025-8-15 12:15:30
@JoeJoeJoe 默认行为:pip 会安装满足条件的最新版本,比如某个三方依赖的子依赖要求是> 1.0 ,这个子依赖当时的最新版本是 1.5 ,当时安装的会是 1.5 ,过一段时间这个子依赖的版本迭代到到了 1.7 ,在这时它会安装 1.7 ,这个好解决,在 requirements.txt 中强制子依赖==1.5 ,但因为项目迭代比较久了,后续有人增加或修改了某些依赖,这个操作是直接在环境中单独安装的(这时候不会暴露冲突问题),然后归档依赖版本到 requirements.txt ,但是项目就是在这样的冲突下稳定运行的,时间久了你想在其他服务器复现环境再通过 requirements.txt 构建的时候就会发现有的包有版本冲突,这时候冲突的依赖只能单独安装,然后刷一遍版本。
下一页 »
1
2
3
/ 3 页
下一页
浏览过的版块
问与答
返回顶部