【问题标题】:try import if not, install in python如果没有,请尝试导入,在 python 中安装
【发布时间】:2026-02-17 19:35:01
【问题描述】:

如果没有安装,我会尝试在 python 中自动安装每个库。

#!/usr/bin/python
# -*- coding: utf-8 -*-

from pip._internal import main
pkgs = ['Bio==0.1.0','argparse==1.4.0']
for package in pkgs:
    try:
        import package
    except ImportError:
        main(['install', package])

但是,出现了这个错误:

Collecting Bio==0.1.0
Using cached https://files.pythonhosted.org/packages/14/c2/43663d53b93ef7b4d42cd3550631552887f36db02c0150d803c69ba636a6/bio-0.1.0-py2.py3-none-any.whl 
Installing collected packages: Bio 
Successfully installed Bio-0.1.0 
Collecting argparse==1.4.0   
Using cached https://files.pythonhosted.org/packages/f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl 
ERROR: Could not install packages due to an EnvironmentError: [Errno2] No such file or directory: '/tmp/pip-req-tracker-6sqtap8q/139713c65f8ac559a034717470dc5a6e30a6db86bdc3d69fe2bc0e63'

我注意到这总是在第一次安装库之后发生,例如:如果我将 ['Bio','argparse'] 更改为 ['argparse','Bio'],则将安装 argparse,但不会安装 Bio

【问题讨论】:

  • 这能回答你的问题吗? Installing python module within code
  • 还要考虑*.com/questions/6120902/…的前两个答案
  • from pip._internal import main _internal 中的下划线表示“不要使用这个”。事实上,pip 的 main() 函数被故意移到 pip._internal 模块中,以阻止人们以这种方式使用它,因为这样做根本不安全。自动安装软件包虽然看起来很方便,但最终对用户不利,因为它会以潜在的不可预测的方式修改他们的系统。相反,请只提出一个问题,但要注意缺少哪些依赖项。

标签: python pip python-import


【解决方案1】:

不要这样做。

改为:

这里的补充说明是如何"Using pip from your program"

【讨论】: