从.py脚本生成.exe

2024-04-20 12:33:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不熟悉。目前,我正在从事与土木工程相关的项目,输入一些关于材料、内力等的值,然后代码计算陶瓷横截面的阻力,它的利用率等等。我有它在VSCode工作,但有麻烦使它.exe文件。任何帮助都是感激和感激的。你知道吗

我试过了,但一无所获。一旦文件被编译,当我运行.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()

Tags: csvnameinputdatanpcmfloatrow
1条回答
网友
1楼 · 发布于 2024-04-20 12:33:08

这里有几点:

1-为什么要将其作为可执行文件?

你不能为你的用户分发python代码吗?如果他们都是工程师,那就容易多了。你知道吗

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

如果你绝对需要一个可以在任何机器上运行的软件,也许python和pyinstaller不是你最好的朋友。你知道吗

你可以让它成为一个web应用,通过使用类似django的东西在导航器上运行。你知道吗

如果复杂,计算密集,但应该运行得快,也许你应该考虑C++。你知道吗

3-底线

Pyinstaller实际创建一个可执行文件需要大量的工作,在执行它和创建将被它捆绑的代码时,需要考虑很多的注意事项。你知道吗

但是阅读这里的问题,the documentation,特别是使用 debug=all选项会慢慢地使您的可执行文件成形。你知道吗

相关问题 更多 >