Python安装;Anaconda+Vscode
宅在家里不想写论文,感觉是时候用下Python了。以前在课题组的电脑装过,后来没用也都忘了,这次先在自己的笔记本上重新安装一下。
一开始先是直接在Python官方上下载3.7.4版本的安装包。但装完,在VScode里虚拟环境一直配置不太对。一怒之下还是再去装了Anaconda
Anaconda的下载与安装
清华镜像下载比较快:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
安装的时候我图方便确定了添加anaconda的环境变量。
如果没有添加的话,可以后面再自己添加,参照
https://www.jb51.net/article/185245.htm
Visual Studio Code插件添加
参考 https://www.jianshu.com/p/f10fb1a4cc87
测试
需求,我想生成一些exe格式有UI的小程序。
比如功能有,计算文件大小与转化功能.
首先为了有图形界面,得先安装一些插件包如tkinter
安装的话,直接命令行输入:
conda install -c anaconda tk
(tkinter一些内容参考:https://www.runoob.com/python/python-gui-tkinter.html)
更详细的介绍参考:https://www.cnblogs.com/shwee/p/9427975.html
在具体代码中,一开始我参考网上的代码,使用:
import Tkinter
然后就会显示查不到模块Tkinter
最后发现还是都需要小写:
import tkinter
总之,最后参考教程写了一个有窗口互动的数据大小转化器,代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:Lxl
#import urllib,urllib2
import tkinter as tk
import numpy
# parameters needed: domain_size: nx,ny,nz
# number of bariable need to be outputted
# time_steps_record
top = tk.Tk()
#设置窗口大小
top.geometry('400x500')
#窗口名
top.title('LES data size calculator')
#geometry parameters for GUI
spl=30 #每一栏间距
sp0=20 #最上一栏与顶部距离
spx=10 #最左边距离
spx2=150 #输入栏左边起始位
sfont=11 #字大小
var1 = tk.StringVar()
i0=0
tk.Label(top, text='nodes in x direction:', font=('Arial', sfont)).place(x=spx, y=sp0)
snx= tk.Entry(top,show=None,font=('Arial',sfont),textvariable=var1) #明文显示
snx.pack()
snx.place(x=spx2, y=sp0)
i0 += 1
tk.Label(top, text='nodes in y direction:', font=('Arial', sfont)).place(x=spx, y=sp0+i0*spl)
sny= tk.Entry(top,show=None,font=('Arial',sfont)) #明文显示
sny.pack()
sny.place(x=spx2, y=sp0+i0*spl)
i0 += 1
tk.Label(top, text='nodes in z direction:', font=('Arial', sfont)).place(x=spx, y=sp0+i0*spl)
snz= tk.Entry(top,show=None,font=('Arial',sfont)) #明文显示
snz.pack()
snz.place(x=spx2, y=sp0+i0*spl)
i0 += 1
tk.Label(top, text='number of variables:', font=('Arial', sfont)).place(x=spx, y=sp0+i0*spl)
snv= tk.Entry(top,show=None,font=('Arial',sfont)) #明文显示
snv.pack()
snv.place(x=spx2, y=sp0+i0*spl)
i0 += 1
tk.Label(top, text='recorded time steps:', font=('Arial', sfont)).place(x=spx, y=sp0+i0*spl)
snt= tk.Entry(top,show=None,font=('Arial',sfont)) #明文显示
snt.pack()
snt.place(x=spx2, y=sp0+i0*spl)
tk.Label(top, text='size(mb):', font=('Arial', 11)).place(x=10, y=300)
t1 = tk.Text(top, height=1.5,width=15,font=('Arial', 11))
t1.pack()
t1.place(x=100, y=300)
tk.Label(top, text='size(Gb):', font=('Arial', 11)).place(x=10, y=350)
t2 = tk.Text(top, height=1.5,width=15,font=('Arial', 11))
t2.pack()
t2.place(x=100, y=350)
def exchange():
nx=int(snx.get())
ny=int(sny.get())
nz=int(snz.get())
nv=int(snv.get())
nt=int(snt.get())
grids=nx*ny*nz
data_mb=grids*nv*nt*8/1048576
data_gb=data_mb/1024
t1.delete('1.0','end') #删除文本框所有内容
t1.insert('insert',"%.2f" % data_mb)
t2.delete('1.0','end')
t2.insert('insert',"%.2f" % data_gb)
b1 = tk.Button(top, text='start calculate ', width=20,
height=2, command=exchange)
b1.place(x=150,y=220)
top.mainloop()
运行界面如:
最后有个问题是生成EXE。
显示pip安装了pyinstaller,然后根据百度教程生成了执行文件。不过问题是因为内附包的问题,程序有两百多兆。
通过安装虚拟环境重新进行pyinstaller打包,但还是没有改善,可能是虚拟环境配置有问题??但暂时先不就这个问题进行研究啦。