windows系统在Anaconda中离线安装PyInstaller

因为项目需要将写好的python代码打包成exe可执行文件,所以这里选择Pyinstaller进行项目打包,比较鸡肋的是电脑无法联网,因此需要离线安装pyinstaller。要想安装成功,分下面几步:

一、准备pyinstaller安装包以及依赖安装包

需要准备除了PyInstaller-3.6-py2.py3-none-any.whl的其他.whl依赖文件,这些文件上传路径在文章最后,可自行下载。

  • algraph-0.17-py2.py3-none-any.whl
  • future-0.18.2-py3-none-any.whl
  • macholib-1.14-py2.py3-none-any.whl
  • pefile-2019.4.18-py2.py3-none-any.whl
  • pywin32_ctypes-0.2.0-py3-none-any.whl
  • PyInstaller-3.6-py2.py3-none-any.whl
二、检查Anaconda3环境变量是否配置其全

在win7下完整配置Anaconda环境变量需要在path下添加三个目录:

  • D:\Anaconda3
  • D:\Anaconda3\Library\bin
  • D:\Anaconda3\Scripts

以上为完整配置Anaconda的环境变量,尤其是往往缺少配置环境变量D:\Anaconda3\Scripts路径导致离线安装某些python第三方库失败

D:\Anaconda3
D:\Anaconda3\Library\bin
D:\Anaconda3\Scripts
三、安装PyInstaller
  1. 将下载好的所有安装包拷贝到你自己的Anaconda3\Scripts目录下
  2. 打开cmd终端,cd到\Anaconda3\Scripts目录下,使用命令pip install algraph-0.17-py2.py3-none-any.whl依次安装上面下载好的包,注意:最后再安装PyInstaller.whl,因为前面的包是其依赖包,需要优先安装
  3. 安装完成后在\Anaconda3\Lib\site-packages目录下查看PyInstaller是否安装成功
四、使用PyInstaller

输入如下命令,生成的可执行文件保存在当前目录下的\dist目录下,
使用PyInstaller打包包括引用了第三方库比如docx,需要用到–hidden-import命令

# 打包
pyinstaller -F XXXX.py

# 如果有第三方库,一起打包
pyinstaller -F XXXXX.py --hidden-import docx --hidden-import win32com
总结:

PyInstaller安装所有需要的依赖包

algraph-0.17-py2.py3-none-any.whl
future-0.18.2-py3-none-any.whl
macholib-1.14-py2.py3-none-any.whl
pefile-2019.4.18-py2.py3-none-any.whl
pywin32_ctypes-0.2.0-py3-none-any.whl
PyInstaller-3.6-py2.py3-none-any.whl

安装包下载链接:
离线下PyInstaller安装包以及所有安装依赖包

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
您好,以下是C语言实现邻接表存储图的广度优先遍历的代码: ```c #include <stdio.h> #include <stdlib.h> #define MAX_VERTEX_NUM 20 // 最大顶点数 typedef char VertexType; // 顶点数据类型 typedef struct ArcNode { int adjvex; // 邻接点在数组的位置下标 struct ArcNode *next; // 指向下一个邻接点的指针 } ArcNode; typedef struct { VertexType data; // 顶点数据 ArcNode *firstarc; // 指向第一个邻接点的指针 } VNode, AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices; // 顶点数组 int vexnum, arcnum; // 图的顶点数和边数 } ALGraph; typedef int Boolean; Boolean visited[MAX_VERTEX_NUM]; // 访问标记数组 void CreateGraph(ALGraph *G) { int i, j, k; ArcNode *p; printf("请输入图的顶点数和边数:"); scanf("%d %d", &(G->vexnum), &(G->arcnum)); printf("请输入各个顶点的名称:"); for (i = 0; i < G->vexnum; ++i) { getchar(); scanf("%c", &(G->vertices[i].data)); G->vertices[i].firstarc = NULL; } for (k = 0; k < G->arcnum; ++k) { printf("请输入第%d条边依附的两个顶点的编号:", k + 1); getchar(); scanf("%d %d", &i, &j); p = (ArcNode *) malloc(sizeof(ArcNode)); p->adjvex = j; p->next = G->vertices[i].firstarc; G->vertices[i].firstarc = p; p = (ArcNode *) malloc(sizeof(ArcNode)); p->adjvex = i; p->next = G->vertices[j].firstarc; G->vertices[j].firstarc = p; } } void BFS(ALGraph *G, int v) { int i; ArcNode *p; int que[MAX_VERTEX_NUM]; int front = 0, rear = 0; printf("%c ", G->vertices[v].data); visited[v] = 1; que[rear++] = v; while (front != rear) { i = que[front++]; p = G->vertices[i].firstarc; while (p != NULL) { if (!visited[p->adjvex]) { printf("%c ", G->vertices[p->adjvex].data); visited[p->adjvex] = 1; que[rear++] = p->adjvex; } p = p->next; } } } int main() { ALGraph G; int i; CreateGraph(&G); printf("请输入遍历起点的编号:"); scanf("%d", &i); printf("广度优先遍历序列为:"); BFS(&G, i); printf("\n"); return 0; } ``` 这是一个实现了邻接表存储图的广度优先遍历的C语言代码。通常情况下,我们使用队列来辅助实现广度优先遍历。该程序采用了一个整型数组作为队列,并用两个指针front和rear分别指向队列的队头和队尾。在遍历时,我们首先将起点加入队列,然后依次从队列取出每个顶点,并访问它的所有未访问邻接点,并将其加入队列,直到队列为空。在访问邻接点时,我们需要注意判断它是否已经被访问过,以避免重复访问。 希望对您有所帮助,如有疑问请留言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值