我写了一封信型号.py这个脚本接收一个csv文件,运行一系列计算,然后将数据输出到我的仪表板.xlsm文件。所有这些文件都位于共享网络驱动器的同一文件夹中。这个.py脚本需要能够通过单击xlsm文件中的按钮来运行。为了进行设置,我编写了一个简单的VBA宏(链接到前面提到的按钮),它运行一个.bat文件。此.bat文件包含shell命令,用于在与我的文件相同的文件夹中创建虚拟环境,然后在此venv中运行我的.py脚本。你知道吗
但是,激活此venv需要很长时间(约1分钟)。如果我在本地文件夹中设置一个venv,我相信它会大大加快运行速度。你知道吗
顶级问题:对于每个用户来说,我的当前设置是运行我的型号.py从excel中获取文件,如果没有,有哪些替代方案?你知道吗
中级问题:在每个用户的笔记本电脑上克隆一个venv,是加快代码运行速度的方法吗?如果不是,我还能做什么?你知道吗
特定于代码的问题:创建克隆的venv并确保每个用户运行我的型号.py从他们自己的本地venv中归档?你知道吗
我对首要问题的回答是:
在过去的两周里,我花了大部分时间寻找替代品。我尝试过将我的.py文件转换成.exe,但是我自己和我的同事都无法使可执行文件正常运行(我们尝试使用Pyinstaller和Py2exe)。你知道吗
然后我研究了虚拟环境,通过大量的尝试和错误,最终得到了一个可以工作的原型(但目前只是为我工作)。你知道吗
我对中级问题的回答是:
老实说,我不知道,也不确定该用谷歌怎么找到答案。你知道吗
我对具体问题的回答是:
我想我可以做以下事情(希望)加速这个过程:
以下是我到目前为止编写的代码:
Sub run_model()
Dim folderPath As String
Dim shellCommand As String
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
ActiveWorkbook.save
folderPath = Application.ActiveWorkbook.Path
shellCommand = folderPath & "\" & "USER_NAME_GOES_HERE.bat"
Call Shell(shellCommand, vbNormalFocus)
End Sub
chdir I:\NETWORK_PATH
I:
python -m venv venv/
"./venv/Scripts/activate.bat" & pip install -r ./src/requirements.txt & "./venv/Scripts/activate.bat" & python "./src/MODEL.py"
'''
import USER_DEFINED_MODULE #this .py file contains functions I use later on in my script
import other_stuff
做一些事情然后输出到仪表板.xlsm你知道吗
最后的一些细节:
顶级评论:
我想用C或C++用GCC编译一个DLL,Excel VBA可以与之接口。你知道吗如果您需要/想要使用python,那么您就有在xlsm文件打开时写入它的问题。因此,python脚本必须从保存结果的工作簿的不同工作簿中启动。不过,这样的话,剧本的捷径也同样不错。你知道吗
最好的选择是型号.py始终运行,监视目录并在添加或修改新文件时自动更新xlsm。这可能需要在添加csv文件时制作一本新书。您可以将日期/时间添加到文件名中。这也意味着没有人需要他们的本地机器设置来运行您的脚本。你知道吗
中层意见:
激活你的静脉应该不会太慢。第一次安装venv的时候就会出现。因此,我会采取打击,除非留下的venv设置每个用户,因为这是最稳健的方法。你知道吗
如果大多数人只会使用你的脚本一次,或者由于初始化程序太慢而推迟一次使用,那么你需要更好的。另一种方法是,如果IT部门同意,下次登录时在每个人的计算机上运行安装程序。或者用一个链接给人们发邮件,这个链接将启动一个后台进程,以便第一次进行设置。你知道吗
低级评论:
关键是不要每次运行脚本时都运行
pip install
。太慢了。您的venv是否已设置。只需在运行pip安装之前检查venv dir是否存在。你知道吗你需要制作虚拟环境吗? 如果所有需求都在本地计算机上,则从python路径调用py文件
相关问题 更多 >
编程相关推荐