从python程序中安装模块

时间:2012-08-22 23:21:50

标签: python module

有没有办法让python程序告诉用户它需要运行一个模块然后程序可以为用户安装

5 个答案:

答案 0 :(得分:2)

您可以捕获ImportError异常以告诉用户程序需要某个模块;

try:
  import numpy as np
except ImportError: 
  print "This program requires numpy!"
  print "Please download it from http://numpy.scipy.org/ and install it"
  print "before running this program."
  exit(1)

请注意,这只是一种以更好的方式退出程序的方法,而没有可能对用户不清楚的回溯。如果找不到该模块,则无论如何都会引发异常。

您应该只对不属于python标准库的模块执行此操作。

尝试自动安装它并不是一个好主意。首先是因为它存在安全风险(传播恶意软件的好方法),其次是因为不同的操作系统或发行版具有不同的处理和注册软件安装的方法。

答案 1 :(得分:0)

您可以创建一个尝试加载特定模块的函数,如果无法加载,则提供用户手动下载的说明,或者您可以自动编写脚本以下载模块。

答案 2 :(得分:0)

这并不能完全回答您的问题,但我认为这可能是您想要的答案。如果可能,我建议不要编辑用户安装的模块,如果你只需要它们来运行脚本,那么你应该考虑PyInstaller,它将你的程序捆绑成.exe文件。

如果你正在制作一个设置脚本以配置某人的机器,这显然不起作用,但否则它可能是一个好主意。

答案 3 :(得分:0)

这很容易,但由于并非所有用户都会在他们的系统中安装 python 或 pip,因此它不适用于每个系统。 代码是-

import os
os.system('<command here>')
os.system('pip install numpy')

它会起作用...

答案 4 :(得分:-1)

您可以使用

import os
os.system('[sudo] [install whatever]')

安装你需要的任何模块......如果用户没有管理员权限,它会提示用户输入管理员密码

http://forums.devshed.com/python-programming-11/running-bash-command-110687.html

修改

根据Matthew Trevor的建议,您还可以尝试将依赖项添加到setup.py,如本文所述http://www.siafoo.net/article/77