使用.py脚本制作.exe

时间:2019-10-08 12:23:21

标签: python

我是Python的新手。目前,我正在从事与土木工程有关的项目,其中输入一些有关材料,内力等的值,然后代码计算出角蛋白横截面的电阻,其利用率等。我有它在VSCode中工作,但无法制作.exe文件。任何帮助都是令人感激的,并得到了广泛的应用。

我尝试了pyinstaller,但没有成功。编译文件后,当我运行.exe时,我得到的只是黑屏

这是有问题的代码

import numpy as np
import csv
import matplotlib.pyplot as plt

# Input for calcualation
fy = float(input("Steel yield strength [kN/cm^2] fy = "))
fu = float(input("Steel tensile strenth [kN/cm^2] fu = "))
E = float(input("Steel modulus of elasticity [kN/cm^2] E = "))
NEd = float(input("Compression force [kN] NEd = "))

Lcry = float(input("Buckling length around y (stronger) axis [cm] = "))
Lcrz = float(input("Buckling length around z (weaker) axis [cm] = "))

data = []
with open('HEA.csv', 'r', newline='') as csv_data:

    csv_read = csv.reader(csv_data)
    reader = next(csv_read)
    for row in csv_read:
        name = int(row[0])
        h = float(row[1])
        b = float(row[2])
        tw = float(row[3])
        tf = float(row[4])
        r = float(row[5])
        d = float(row[6])
        A = float(row[7])
        G = float(row[8])
        Iy = float(row[9])
        Wyel = float(row[10])
        Wypl = float(row[11])
        iy = float(row[12])
        Iz = float(row[13])
        Wzel = float(row[14])
        Wzpl = float(row[15])
        iz = float(row[16])
        It = float(row[17])
        Iw = float(row[18])
        data.append([name, h, b, tw, tf, r, d, A, G, Iy, Wyel, Wypl, iy, Iz, Wzel, Wzpl, iz, It, Iw])

data = np.asarray(data)
data = np.transpose(data)

name = data[0]
h = data[1]
b = data[2]
tw = data[3]
tf = data[4]
r = data[5]
d = data[6]
A = data[7]
G = data[8]
Iy = data[9]
Wyel = data[10]
Wypl = data[11]
iy = data[12]
Iz = data[13]
Wzel = data[14]
Wzpl = data[15]
iz = data[16]
It = data[17]


alpy = 0.34

Ncry = ((np.pi**2 * E * Iy)/(Lcry**2))
print(Ncry)

# Nondimensional slednerness

ldy = np.sqrt(((A*fy)/Ncry))

print(ldy)

# auxiliary value

phiy = 0.5*(1+alpy*(ldy-0.2)+ldy**2)

print(phiy)

hiy = 1/(phiy+np.sqrt(phiy**2-ldy**2))

if hiy.all() > 1:
    hiy = 1
hiy = hiy

print(hiy)

NbRd = (hiy*21.24*fy)/1.10

print("Resistance to compression", NbRd)

if NEd/NbRd.all() <= 1:
    print("Resistance is satisfied")
print("Resistance is not satisfied")

ratio = (NEd/NbRd)*100
print(ratio)

plt.plot([name], [ratio], 'ro')
plt.show()

1 个答案:

答案 0 :(得分:0)

这里有几点:

1-为什么要使其成为可执行文件?

您不能只为您的用户分发python代码吗?如果他们都是工程师,那应该会更容易。

2-如果绝对从一开始就需要使其成为可执行文件:

如果您绝对需要可以在任何计算机上运行的软件,则python和pyinstaller可能不是您最好的朋友。

您可以将其设置为网络应用,并通过使用django之类的工具在导航器上运行。

如果它很复杂,计算量很大,但是运行速度很快,也许您应该考虑使用C ++。

3-底线

Pyinstaller实际创建可执行文件需要大量工作,在执行该可执行文件并创建将与其捆绑在一起的代码时,需要考虑很多注意事项。

但是在这里the documentation处阅读问题,特别是使用--debug=all选项将使您的可执行文件慢慢成形。