Python 这是否可能:在源代码和相关文件保留在网络驱动器中的同时,将虚拟环境克隆到每个用户的笔记本电脑上
我编写了一个model.py脚本,它接收一个csv文件,运行一系列计算,然后将数据输出到Dashboard.xlsm文件中。所有这些文件都位于共享网络驱动器的同一文件夹中。这个.py脚本需要能够通过单击xlsm文件中的按钮来运行。为了进行设置,我编写了一个简单的VBA宏(链接到前面提到的按钮),它运行一个.bat文件。此.bat文件包含shell命令,用于在与我的文件相同的文件夹中创建虚拟环境,然后在此venv中运行我的.py脚本 但是,激活此venv需要很长时间(约1分钟)。如果我在本地文件夹中设置一个venv,我相信它会大大加快运行速度 顶级问题:我当前的设置是否是每个用户能够从excel中运行我的model.py文件的最佳方式,如果不是,有什么替代方案 中级问题:在每个用户的笔记本电脑上克隆一个venv,是否是加快代码运行速度的方法,如果不是,我还可以尝试做什么 特定于代码的问题:创建克隆的venv并确保每个用户从其本地venv中运行my model.py文件的最佳方法是什么 我对最重要问题的回答是: 过去两周的大部分时间里,我都在寻找替代方案。我曾尝试将.py文件转换为.exe文件,但我自己和我的同事都无法使可执行文件正常运行(我们尝试使用Pyinstaller和Py2exe) 然后我研究了虚拟环境,通过大量的尝试和错误,最终得到了一个可以工作的原型(但现在只为我工作) 我对中级问题的答复如下: 老实说,我不知道,也不确定用谷歌搜索什么才能找到答案 我对具体问题的答复是: 我想我可以做以下事情(希望)来加速这个过程:Python 这是否可能:在源代码和相关文件保留在网络驱动器中的同时,将虚拟环境克隆到每个用户的笔记本电脑上,python,excel,vba,batch-file,python-venv,Python,Excel,Vba,Batch File,Python Venv,我编写了一个model.py脚本,它接收一个csv文件,运行一系列计算,然后将数据输出到Dashboard.xlsm文件中。所有这些文件都位于共享网络驱动器的同一文件夹中。这个.py脚本需要能够通过单击xlsm文件中的按钮来运行。为了进行设置,我编写了一个简单的VBA宏(链接到前面提到的按钮),它运行一个.bat文件。此.bat文件包含shell命令,用于在与我的文件相同的文件夹中创建虚拟环境,然后在此venv中运行我的.py脚本 但是,激活此venv需要很长时间(约1分钟)。如果我在本地文件夹
- 我不会将venv保存在网络文件夹中,而是保存/创建n个版本的venv,每个用户的笔记本电脑上都有一个版本(在他们不会修改的文件夹中)
- 我创建n.bat文件,每个用户的特定路径信息对应一个。这是一个文件,它在运行时创建venv并运行python脚本
- 在我的简单VBA宏中,我检查哪个用户正在使用xlsm文件,并相应地激活正确的.bat文件
子运行_模型()
将folderPath设置为字符串
将命令设置为字符串
ActiveSheet.EnableCalculation=False
ActiveSheet.EnableCalculation=True
ActiveWorkbook.save
folderPath=Application.active工作簿.Path
shellCommand=folderPath&“\”和“用户名在这里。bat”
调用Shell(shellCommand,vbNormalFocus)
端接头
设置venv并运行py脚本的bat文件
python脚本
执行这些操作,然后输出到dashboard.xlsm
最后的一些细节:
关键是不要每次运行脚本时都运行
pip install
。那太慢了。您的venv是否已设置。只需在运行pip安装之前检查venv dir是否存在 您需要制作虚拟环境吗?
如果所有要求都在本地计算机上,那么在创建.exe时从python路径调用py文件,我发现如果不从cmd窗口运行,您不会得到错误反馈。此外,如果您正在执行基于Excel的操作,有时库无法正确复制。我发现,在构建之后,有时需要进入lib/xlwt并从自己的Python目录复制ExcelFormulaLexer.pyc和ExcelFormulaParser.pyc。无需创建n个特定于用户的
.bat
文件-只需传递一个带有用户名的参数,以便根据需要进行自定义。使维护变得非常容易创建venv确保无论我的同事如何处理他们自己的python发行版,程序都能运行。这将减少今后可能出现的问题。
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