导入前先安装模块

3
我想知道是否可能在尝试导入模块之前使用我的Python脚本安装模块。现在运行脚本时,它会尝试导入模块(当然),但我希望它安装模块,然后检查是否可以导入它。 更新1 这是我想要在运行脚本时使用的安装脚本:
def install():
print("\nChecking for dependencies, please stand by...")
with hideInfo():
    if str(os.name) == 'nt':
        easy_install.main(['textract'])
        pip.main(['install', 'logging'])
        pip.main(['install', 'datetime'])
    else:
        pip.main(['install', 'textract'])
        pip.main(['install', 'logging'])
        pip.main(['install', 'datetime'])

time.sleep(1)
menu()

这回答您的问题吗?在代码中安装Python模块 - Gino Mempin
2个回答

0

好的。

  1. 以编程方式安装,然后尝试导入(而不是从命令行安装)

  2. 如果已经是编程方式安装,请在现有的安装脚本末尾添加一个导入语句


# normal installation routine
try:
    import foobar        
except ImportError:
   panic()
  1. 在Python中调用外部安装命令(例如sudo apt-get install python-foobar)

需要考虑的事情

  • 通常,要安装一个软件包,您需要提升权限或 sudo 权限。您可能不希望其余的 Python 运行时也具有这些权限,因此单独安装可以避免危险(如果您正在进行文件处理等操作)
  • 大多数安装脚本已经报告了它们是否失败。进行额外的检查并没有本质上的用处。
  • 未经人们许可而安装软件可能会给他们带来麻烦。如果您要分发此脚本,我建议不要这样做。我不希望我下载的软件包覆盖我的 NumPy 分发,因为它认为这是一个好主意。
  • 如果您将其安装到本地目录,然后尝试从本地目录导入,则不能保证已安装的软件包可以从整个计算机访问,这可能是个问题也可能不是。

谢谢你的回答,我不是100%确定你的意思。但我会在我的帖子中更新我的安装函数。我在我的主函数中调用这个函数。 - Nerotix

0

我用了一种不同的方法来解决它。我使用了一个叫做“importlib”的模块。通过这个模块,我能够尝试导入模块并使用try和except的方式,如果无法导入,则安装它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接