python - 使用多进程和 pandas 时使用 PyInstaller 创建 .exe 时出现 FileNotFoundError
问题描述
所以我正在使用多处理并为了让事情更方便,我让我的 .py 脚本创建了 2 个 excel 文件,这些文件存储在一个名为 data 的文件夹中。
问题是,当我使用 pyinstaller 创建可执行文件(.exe,我使用 Windows)时,它会抛出FileNotFoundError
. 我之前已经讨论过这个问题,但没有一种方法对我有用。
我的 python 脚本由 1 个主脚本组成,test2.py
它调用bug_installer.py
模块来创建一些随机的 excel。该bug_installer.py
模块首先创建一个文件夹以防万一,然后继续创建 Excel。
这是代码:
bug_installer.py
import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))
import pandas as pd
import random as r
from time import sleep
from shutil import copyfile
def main():
while True:
try:
os.mkdir("data")
except FileExistsError:
pass
n = 10
n_dict = {}
ran = []
for _ in range(n):
ran.append(r.choice(list(range(n))))
n_dict["N number"] = ran
df = pd.DataFrame(n_dict)
og = "df_original.xlsx"
ph = "df_placeholder.xlsx"
og_path = os.getcwd()+"\\data\\"+og
ph_path = os.getcwd()+"\\data\\"+ph
df.to_excel(og_path, index = False)
copyfile(og_path, ph_path)
sleep(3)
和test2.py
模块:
import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))
import multiprocessing as mp
import bug_installer as bug
from time import sleep
import pandas as pd
def f(name):
print('hello', name)
if __name__ == '__main__':
p = mp.Process(target=bug.main, args=())
p.start()
sleep(3)
while True:
df = pd.read_excel("data\\df_placeholder.xlsx")
print(df)
sleep(1)
解决方案
推荐阅读
- python - 按指定列的最大顺序求和
- vue.js - 更新表项数量
- python - 将图像“拆分”成字节包
- angular - 如何在 dx-calendar 中修复“错误地显示星期几”?
- regex - 为什么这个正则表达式单元测试会失败?
- uitableview - 以编程方式在 UITableView 单元格中显示 UIStackView
- javascript - 拒绝应用来自 ' 的样式
' 因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型,并且启用了严格的 MIME 检查 - sql-server - 无法使用 vbscript 重命名 mdf ldf 文件
- javascript - 避免“空”变量为空或未定义?
- javascript - Datatable 和 J 查询表搜索 - 为搜索中的数据创建对应的图表