部署python脚本及其依赖项,包括本地安装的依赖项

部署python脚本及其依赖项,包括本地安装的依赖项,python,pip,Python,Pip,我需要部署一个python脚本,该脚本需要混合使用公共(pip可安装)和“本地”(pip安装路径/to/local/package)包。我部署到的计算机将无法访问internet或访问本地软件包,但可能会有python。准备和部署都将在windows中完成 到目前为止,我的解决方案是创建一个venv: python-m-venv-myvenv 激活myvenv pip安装[可从pip获得软件包] pip安装[本地软件包] 那么我有两个选择: 1) 发送venv目录 将我的python脚本与

我需要部署一个python脚本,该脚本需要混合使用公共(pip可安装)和“本地”(pip安装路径/to/local/package)包。我部署到的计算机将无法访问internet或访问本地软件包,但可能会有python。准备和部署都将在windows中完成

到目前为止,我的解决方案是创建一个venv:

  • python-m-venv-myvenv
  • 激活myvenv
  • pip安装[可从pip获得软件包]
  • pip安装[本地软件包]
那么我有两个选择:

1) 发送venv目录

  • 将我的python脚本与venv目录一起发送(这样有人可以使用
    myvenv\Scripts\python myscript.py
2) 发送下载的依赖项

  • 从myvenv create requirements.txt(
    pip freeze>requirements.txt
    ),它捕获我下载的任何软件包以及pip为它们下载的任何依赖项
  • 下载依赖项的whl/zip文件
    • pip下载-r requirements.txt-d本地\u包\u文件——查找links=path/to/local/package/zip
  • 使用myscript.py发送本地_包_文件目录,然后在我部署的计算机上执行以下操作:
    • python-m venv deployedenv
    • 激活deployedenv
    • pip安装-r requirements.txt--无索引--查找links=local\u package\u文件
我不知道该怎么办,但这些解决方案让人觉得有些脆弱。如果我这样做(1),我认为只要我总是在类似的操作系统之间转换(例如:从windows到windows),它就可以工作。对于(2),我不确定目标计算机的python版本是否与下载所有内容的计算机的python版本不同

我试过浏览其他SO帖子,但它们通常缺少一个元素(例如:包依赖项,但仍需要internet连接,或来自pip的包依赖项,但不处理本地包,等等)


对于如何改进/简化,或者在何处中断,我们非常感谢您的建议。

PyInstaller可能是您所需要的。它允许您将python脚本(或其集合)打包到windows可执行文件中。作为一个额外的好处,你甚至不需要在目标系统上安装Python。我去看看。我也考虑过docker,但是我有一个问题,就是在目标机器上安装docker,而不是在目标机器上安装python包。