我想知道是否可以使用我的 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()
最佳答案
当然可以。
Install programmatically ,然后尝试导入(而不是从命令行安装)
如果它已经是程序化的,只需将导入语句添加到现有安装脚本的末尾即可
# normal installation routine
try:
import foobar
except ImportError:
panic()
- > Call an external install command in python (sudo apt-get install python-foobar,例如)
需要考虑的事项
- 通常,要安装软件包,您需要提升权限或使用 sudo 权限。您可能不希望 python 运行时的其余部分也具有这些功能,因此单独安装可以避免危险(例如,如果您正在进行文件处理)
- 如果安装失败,大多数安装脚本都会报告。进行额外检查本身并不是有用的。
- 在未经他人许可的情况下安装东西可能会让他们感到厌烦。如果您要分发此脚本,我建议您不要这样做。我不希望我下载的包覆盖我的 numpy 发行版,因为它认为这是个好主意
- 如果您将它安装到本地目录,然后尝试从本地目录导入,这不一定是一个很好的指标,表明您的整个计算机都可以访问已安装的包。这可能是也可能不是问题
关于python - 导入前安装模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35180235/