python创建项目环境及项目打包

创建项目环境

conda创建环境常用命令

conda create -n py310 python=3.10.11
conda env list
activate
deactivate
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple XX
conda list

conda remove -n  需要删除的环境名 --all

# 复制conda虚拟环境
conda create -n new_name --clone base

# Spec List
# 如果需要在具有 相同操作系统 的计算机之间复制环境,则可以生成 spec list。
conda list --explicit > spec-list.txt
# 重现环境
conda create  --name python-course --file spec-list.txt

# Environment.yml
# 使用 -export 选项生成一个 environment.yml 文件,以在 不同的平台和操作系统之间 复现项目环境
# spec list 文件和 environment.yml 文件之间的区别在于: environment.yml 文件不针对特定操作系统,并且使用YAML格式。
# environment.yml 仅列出了软件包名称,由 conda 基于软件包的名称构建环境。 另一个区别是 -export 还包括使用pip安装的软件包,而 spec list 则没有。
# 导出 environment.yml 文件
conda env export > environment.yml
# 重现环境
conda env create -f environment.yml

# Conda Pack
# 用于无网络环境
# conda-pack 指定平台和操作系统,目标计算机必须具有与源计算机相同的平台和操作系统
# 需安装 conda-pack,并确保您位于 root 或 base 环境中,以便 conda-pack 在子环境中可用。Conda-pack 可通过 conda-forge 或者 PyPI 安装。
# conda-forge
conda install -c conda-forge conda-pack
# PyPI
pip install conda-pack
# ###打包一个环境###
# Pack environment my_env into my_env.tar.gz
conda pack -n my_env
# Pack environment my_env into out_name.tar.gz
conda pack -n my_env -o out_name.tar.gz
# Pack environment located at an explicit path into my_env.tar.gz
conda pack -p /explicit/path/to/my_env
# ###重现环境###
# Unpack environment into directory `my_env`
mkdir -p my_env
tar -xzf my_env.tar.gz -C my_env
# Use Python without activating or fixing the prefixes. Most Python
# libraries will work fine, but things that require prefix cleanups
# will fail.
./my_env/bin/python
# Activate the environment. This adds `my_env/bin` to your path
source my_env/bin/activate

创建项目虚拟环境

从Python 3.3版本起,Python标准库自带了venv模块用于创建虚拟环境。

创建虚拟环境

python -m venv env

这将在当前目录下生成一个名为my_venv的文件夹,其中包含了独立的Python解释器和pip包管理器。
在这里插入图片描述
18.2M

激活虚拟环境

  • Windows系统:
.\env\Scripts\activate
  • Linux或macOS系统:
$ source env/bin/activate

激活后,终端前缀将显示虚拟环境名,表示当前正在使用该环境的Python解释器。

安装第三方库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy # 83.6M - 18.2M
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib # 
pip list  # 130M-83.6M

pyinstaller 打包

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

打包成文件夹的形式

pyinstaller your_program.py
pyinstaller -F your_program.py

常用参数组合

# 基础命令
pyinstaller myscript.py
# 初次打包建议添加-c参数,可以同过cmd黑窗口查看打包问题
pyinstaller -c myscript.py
# 生成一个单独的exe文件,适合无文件操作的程序
pyinstaller -F myscript.py
# 生成一个单独的exe文件,适用windows系统,适合无文件操作的程序,下面2个是一样的效果。
pyinstaller -F -w myscript.py
pyinstaller -F --windowed myscript.py
# 生成一个文件夹,文件夹中包含exe执行程序,适合有一定文件夹或文件的操作程序。
pyinstaller -D --windowed myscript.py

# 针对文件生成的最终位置,使用--distpath=参数指定
pyinstaller -D --windowed --distpath='C:\Users\xxx\xxx\xx' myscript.py
# 针对文件生成的exe文件名字,使用--name=TYQT参数指定
pyinstaller -D --windowed --distpath='C:\Users\xxx\xxx\xx' --name='TYQT' myscript.py
# 针对文件生成的exe的图标,使用--icon=参数指定,zaiwindows系统下,需要使用ico图标,如果是png直接百度在线转
pyinstaller -D --windowed --distpath='C:\Users\xxx\xxx\xx' --name='TYQT' --icon='icon.ico' myscript.py
# 针对exe程序以来的文件夹和文件,使用--add-data(比如.txt)和--add-binary(程序可能依赖其他.exe命令)参数指定
# --add-data和--add-binary参数实际是2个文件,在windows是通过;分号区分复制前和后的,在linux的符号是:。
# 下边的语句就是将项目的data/excel/订单记录表.xlsx文件复制到C:\Users\lenovo\PycharmProjects\程序打包文件\myscript\data\excel文件夹下,myscript\data\excel会自动创建。
pyinstaller -D --windowed --distpath='C:\Users\xxx\xxx\xx' --name='TYQT' --icon='icon.ico' --add-data=data/excel/订单记录表.xlsx;./data/excel myscript.py

嵌入式打包

下载嵌入式版本的python

链接: https://www.python.org/downloads/windows/
在这里插入图片描述

配置环境

解压该压缩包,进入该文件夹里,
在这里插入图片描述
更改python310._pth文件里面的内容:
在这里插入图片描述
在这里插入图片描述

只有导入了site,才能正常运行程序。也要把上级文件夹(…)加进去,因为最终我们的Python代码会放在这个文件夹的上级。

下载get-pip.py文件
链接: https://bootstrap.pypa.io/pip/
在这里插入图片描述
将get-pip.py放到python解释器同级目录
进入该文件夹,打开cmd

.\python.exe get-pip.py

在这里插入图片描述
得到生成的两个文件夹Lib、Scripts:
在这里插入图片描述
进入Scripts文件夹,打开cmd,用这个文件夹的pip进行安装你自己的程序所需要的第三方库
在这里插入图片描述

无参调用

建立script文件, 在文件夹内编写main.py

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import sys

BASE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
print(BASE_PATH)
sys.path.append(BASE_PATH)

print("hello, 123456!")
print("按任意键继续...")
input()  # 这里input()函数会暂停并等待用户输入

通过bat文件调用,run.bat

.\python-3.10.11-embed-amd64\python.exe .\script\main.py
pause

通过exe文件调用,需先编写run.c

#include <stdlib.h>
int main()
{
    system(".\\python-3.10.11-embed-amd64\\python.exe .\\script\\main.py");
}

编写run.c, 得到run.exe
在这里插入图片描述
整个文件夹的目录
在这里插入图片描述
去除第三方库,整个项目只有19M,压缩后只有8M

可完善

安装第三库失败时,可在python环境版本相同时,直接copy
将py文件转为pyd加密后,再调用
考虑带参数的调用
考虑带界面的调用

nuitka打包

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple nuitka

nuitka --follow-import-to=mdl main.py
nuitka --standalone --output-dir=out2 main.py
nuitka --onefile --output-dir=out3 main.py        不建议使用

python -m nuitka --standalone --remove-output {your_python_program_name}.py
nuitka --mingw64 --show-progress --standalone --disable-console --enable-plugin=matplotlib --plugin-enable=numpy --onefile --remove-output camera.py

nuitka打包后的exe体积小了,在本机运行无问题;但迁移到其他计算机会遇到各种问题。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值