这是否可能:将虚拟环境克隆到每个用户的笔记本电脑上,而源代码和相关文件仍保留在网络dri中

2024-04-26 14:49:40 发布

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

我写了一封信型号.py这个脚本接收一个csv文件,运行一系列计算,然后将数据输出到我的仪表板.xlsm文件。所有这些文件都位于共享网络驱动器的同一文件夹中。这个.py脚本需要能够通过单击xlsm文件中的按钮来运行。为了进行设置,我编写了一个简单的VBA宏(链接到前面提到的按钮),它运行一个.bat文件。此.bat文件包含shell命令,用于在与我的文件相同的文件夹中创建虚拟环境,然后在此venv中运行我的.py脚本。你知道吗

但是,激活此venv需要很长时间(约1分钟)。如果我在本地文件夹中设置一个venv,我相信它会大大加快运行速度。你知道吗

顶级问题:对于每个用户来说,我的当前设置是运行我的型号.py从excel中获取文件,如果没有,有哪些替代方案?你知道吗

中级问题:在每个用户的笔记本电脑上克隆一个venv,是加快代码运行速度的方法吗?如果不是,我还能做什么?你知道吗

特定于代码的问题:创建克隆的venv并确保每个用户运行我的型号.py从他们自己的本地venv中归档?你知道吗

我对首要问题的回答是:

在过去的两周里,我花了大部分时间寻找替代品。我尝试过将我的.py文件转换成.exe,但是我自己和我的同事都无法使可执行文件正常运行(我们尝试使用Pyinstaller和Py2exe)。你知道吗

然后我研究了虚拟环境,通过大量的尝试和错误,最终得到了一个可以工作的原型(但目前只是为我工作)。你知道吗

我对中级问题的回答是:

老实说,我不知道,也不确定该用谷歌怎么找到答案。你知道吗

我对具体问题的回答是:

我想我可以做以下事情(希望)加速这个过程:

  • 我不会将venv保存在network文件夹中,而是保存/创建n个版本的venv,每个用户的笔记本电脑上都有一个版本(在他们不会修改的文件夹中)。你知道吗
  • 我创建n.bat文件,每个用户的特定路径信息对应一个。这个文件在运行时创建venv并运行python脚本。你知道吗
  • 在我的简单VBA宏中,我检查哪个用户正在使用xlsm文件,并相应地激活正确的.bat文件。你知道吗

以下是我到目前为止编写的代码:

调用bat文件的VBA脚本

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

设置venv并运行py脚本的bat文件

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"
'''

python脚本

import USER_DEFINED_MODULE #this .py file contains functions I use later on in my script
import other_stuff

做一些事情然后输出到仪表板.xlsm你知道吗

最后的一些细节:

  1. 没有人有管理员权限
  2. 每个人都通过anaconda安装了python
  3. 我试着独立安装python,但是我无法使它正常工作(因此可以回退到Anaconda发行版)
  4. 是的,我必须使用Excel作为输入/输出文件。你知道吗

Tags: 文件用户py脚本文件夹venv虚拟环境仪表板
2条回答

顶级评论:

我想用C或C++用GCC编译一个DLL,Excel VBA可以与之接口。你知道吗

如果您需要/想要使用python,那么您就有在xlsm文件打开时写入它的问题。因此,python脚本必须从保存结果的工作簿的不同工作簿中启动。不过,这样的话,剧本的捷径也同样不错。你知道吗

最好的选择是型号.py始终运行,监视目录并在添加或修改新文件时自动更新xlsm。这可能需要在添加csv文件时制作一本新书。您可以将日期/时间添加到文件名中。这也意味着没有人需要他们的本地机器设置来运行您的脚本。你知道吗

中层意见:

激活你的静脉应该不会太慢。第一次安装venv的时候就会出现。因此,我会采取打击,除非留下的venv设置每个用户,因为这是最稳健的方法。你知道吗

如果大多数人只会使用你的脚本一次,或者由于初始化程序太慢而推迟一次使用,那么你需要更好的。另一种方法是,如果IT部门同意,下次登录时在每个人的计算机上运行安装程序。或者用一个链接给人们发邮件,这个链接将启动一个后台进程,以便第一次进行设置。你知道吗

低级评论:

关键是不要每次运行脚本时都运行pip install。太慢了。您的venv是否已设置。只需在运行pip安装之前检查venv dir是否存在。你知道吗

你需要制作虚拟环境吗? 如果所有需求都在本地计算机上,则从python路径调用py文件

相关问题 更多 >