python环境打包

python环境打包

环境打包的一些知识

一个程序B要安装,那么它可能需要A1,A2,A3等其他程序,也就是说,B的安装,依赖其他程序。

B可以是一个程序,也可以是一个项目,这里的A其实也就是依赖包或者依赖软件。将所有的A打包,也就是项目B运行所需要的环境。

|A1---|
|A2---|--->B
|A3---|

现在,新建一个文件夹File,那么这个文件夹中包含了A1,A2,A3,B。那么此时,环境A们,项目B都在一个文件夹中,B可以运行:

A1
A2
A3
B

运行B时,B需要知道其他依赖的位置,那么B用的就是相对路径。举个例子,运行B需要用到python,把么B的运行脚本中,就需要声明A1的位置,.\A1\python.exe

如果此时将这个文件夹打包,那么就可以实现项目迁移,不需要在其他电脑上重新配环境。因为他们都在一整个文件夹下,B用的又都是相对路径,那么B肯定能找到其他依赖包的位置。

那么问题来了,如果又有一个项目C,它用的环境是A1,A4,A5。怎么办呢?

|A1---|
|A4---|--->C
|A5---|

当然,我们也可以新建一个文件夹,文件夹中包含了A1,A4,A5,C。也就是包含了环境和项目。C用的也是相对路径。

A1
A4
A5
C

此时是不是可以将A1单独拿出来呢?

当然可以。如果A1安装在了其他文件夹中,那么C就需要重新声明A1的位置。这个位置,也就是绝对路径,也就是环境变量。让C能用,B也能用。也就是说,环境变量的作用是告诉全部的项目和程序,A1的位置。

注意,无论是B还是C,一般都会有一个文件用来存储依赖包的位置,单独打包的环境,用的相对路径,而在其他地方的依赖包,用相对路径的写法会比较复杂,所以用的是绝对路径。如果声明了环境变量,也就是声明了该依赖包的绝对路径。

也就是说,一个项目一个环境,便于迁移,用相对路径。

但是,如果很多项目用的都是同一个依赖包,避免冗余,就可以用绝对路径。

环境打包的一些命令(先不看,最后看)

# torch打包
.\runtime\python.exe -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# 指定打包目录
.\runtime\python.exe -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 -t .\runtime\Lib\site-packages
# 自己指定一个位置
.\runtime\python.exe -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 -t .\runtime\Lib\mysite-packages
# 卸载包
.\runtime\python.exe -m pip uninstall torch
# 导出依赖包列表
.\runtime\python.exe -m pip freeze > requirement_ok.txt

实践

目标:打包好了之后,双击就能用。

  • pyinstaller打保证exe后,会确实一些包
  • 使用虚拟环境,例如anoconda。如果换了路径,E盘到F盘,一样不能使用。因为conda的打包是绝对路径

制作python整合包,兼容路径和依赖包。

支出管理系统的打包

github项目名称:mijiao_consumption_management

一、项目下载和python环境安装

总体思路:1 在项目根目录下新建文件夹并安装python;2 打开cmd窗口使用相对路径下载项目运行依赖。

1 解压项目
在这里插入图片描述
2 cmd调出命令行窗口,目的是为了在该目录下进行其他安装包的操作
在这里插入图片描述
在这里插入图片描述

3 一般而言,项目中会有requirement文件,里面的描述内容含有所需要的依赖。并且需要结合项目地址看依赖包的版本和其他依赖

4 去python官网下载python包,点击downloads-windows-选择stable releases-windows(64-bits)

(Windows embeddable package (64-bit)是嵌入包的方式)

5 然后在项目文件夹下新建一个文件夹取名为python

(一定要新建一个文件夹,因为安装的python中是一堆散文件,它不会帮你建一个python的文件夹。只有这样,项目目录下的文件就不会显得很乱。)

(其实也可以将python安装在其他目录,然后复制到项目地址下。如果你有多个python版本在一个文件夹下,以应对不同的项目环境,这样就可以直接复制到其他项目中。例如:)
在这里插入图片描述

6 将python安装Mijiao_Consumption_Management-main\python中,并且不需要勾选Add python.exe to PATH

(Customize installation,安装位置,PATH,这三个需要动一下,其他的不要动。)

(如果你显示为这个:第一个是修改,安装步骤和第一次安装相同,路径不可选;第二个是将你误删的文件补充进第一次安装的路径;第三个是卸载已有路径下的python。我选择repair,然后uninstall,再安装。)
在这里插入图片描述

7 安装完之后显示为:
在这里插入图片描述
8 将python文件夹更名为runtime
(不更名也可以)

二、pip下载依赖包

(只有一个步骤)在弹出的cmd窗口中出入:.\runtime\phthon.exe -m pip install -r requirement.txt,然后点击安装。

在这里插入图片描述

  • 相对路径.\runtime\python.exe,这里调取的是该文件夹下的python执行文件;
  • 使用-m,使用该环境下的命令。使用 -m 可以确保运行的是当前 Python 环境中的模块,避免因系统环境变量混乱导致的版本冲突。
  • pip install -r requirement.txt表示下载txt中的依赖包,pip是一个包管理器,作用是将环境打包。
  • 使用.\runtime\phthon.exe -m的作用是将依赖打包进runtime文件夹,此时runtime中使用的就是相对路径。在使用runtime作为依赖文件时就是一个相对路径的形式。

(如果打包很慢,那就科学上网。部分人需要在上述命令最后加入--proxy http://localhost:10807

(打开命令行窗口,Win10需要在路径下输入cmd,Win11可以右键点击在终端打开

(注意反斜线和正斜线,不然会报错'.' 不是内部或外部命令......

(如果报错No module named pip,那就根据第一部分的6步骤重装)

2 安装完之后进行下一步。

三、启动脚本编辑

先看完整个过程,再进行尝试。

思路:编写执行脚本,并根据github中的启动说明编辑脚本,然后启动并验证。

1 启动项为app.py。新建文件start.txt,并且编辑内容:

在这里插入图片描述

2 查看项目说明。项目说明中是用streamlit run app.py进行启动的,使用的是python环境安装包中的一个命令。

在这里插入图片描述

3 所以需要重新编辑内容,.\runtime\python.exe -m streamlit run app.py

在这里插入图片描述

(-m的作用是使用该python环境下的命令,一般情况下都需要加上。)

4 将文件更名为bat文件。

在这里插入图片描述

5 点击start.bat启动,随便操作一下。

(第一次启动streamlit会让你填邮箱,随便填然后就能启动了。)

(powershell和cmd对正反斜杠的识别不一样,注意修改。)

6 将cmd窗口关了,项目也就关了。

四、验证。

关闭cmd窗口,重新启动进行验证;

将根目录Mijiao_Consumption_Management-main改名为其他名字,例如asd,重新启动进行验证。

ctrl-x到其他文件夹,再启动进行验证。

五、总结

总体思路:1 在项目根目录下新建文件夹并安装python;2 使用相对路径管理项目依赖。

无论怎么弄,项目启动的环境一定依赖是python中的包的。

所以包的更新,都和我已经打包好的环境无关。

以此实现一键启动和项目迁移和项目分发。

依赖包打包在~\runtime\site-packages\中。

番茄时钟项目打包

yasumi-clock

再练一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值