【问题标题】:Python 3.5.1 : How to check whether openpyxl package exist and if it does not exist how to download and install it "within" the script?Python 3.5.1:如何检查 openpyxl 包是否存在,如果不存在,如何在脚本“内”下载和安装它?
【发布时间】:2016-06-10 03:33:53
【问题描述】:

两周前我开始编写python代码,直到现在我将一些excel数据转换为txt文件后对其进行了操作。现在,我想直接操作excel数据,所以我需要安装openpyxl包。但是,我的脚本将在许多不同的地方和计算机上使用(注意:它们都使用 OS X 或 Linux 发行版)可能(可能不)包含安装的 openpyxl 包。我希望我的脚本检查这个包是否存在,如果它没有退出,则下载并安装它。

为此,当我搜索并发现我可以通过首先导入 pip 模块然后 pip.get_installed_distributions() 方法来检查包的存在。但是,我不确定我是否以错误的方式。此外,我不知道如何“不离开脚本”下载和安装 openpyxl 包。

你愿意帮助我吗?

【问题讨论】:

标签: python python-3.x python-3.5


【解决方案1】:

当您没有要部署的软件时尝试解决部署问题,您是在超越自己。

让脚本尝试管理自己的部署通常是个坏主意,因为它会从包管理器中转移责任。

这是我对您问题的回答:

  1. 构建您的软件假设所有软件包都已正确安装/部署。我建议在您的开发计算机上创建一个 virtualenv(虚拟环境),使用 pip 安装 openpyxl 和您需要的任何其他软件包。
  2. 一旦您的软件构建并运行,请阅读如何将您的软件包部署到 PyPi:https://pypi.python.org/pypi。通过将 openpyxl 定义为依赖项来创建您的包,确保您的包可以正确安装/运行(我建议添加测试),然后部署到 PyPi 以便任何人都可以使用您的软件。

如果您想在脚本中添加一个不错的验证层以防万一,请将以下内容添加到您的 main 方法中:

#!/usr/bin/env python3
import sys
try:
    import openpyxl
except ImportError as iE:
    print("Python Excel module 'openpyxl' not found")
    sys.exit(1)

... rest of script ...

【讨论】:

  • 我忘了在我的回答中澄清... hashbang #!/usr/bin/env python3 位于脚本 file 的顶部,而不是在方法中,所以省略如果您将代码放入函数中,则为行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
相关资源
最近更新 更多