自动导入模块

Automate import modules

我有这个可以导入所有模块,如果它们不存在的话,问题是即使我有它们,如果我不存在,它也有行为,我做错了什么?

listimport=["request","shutil","shutil","styless","time","tkinter","openpyxl","html","datetime","importlib","string",
      "easygui","bs4","webbrowser","glob","tarfile","webbrowser","pathlib","platform","subprocess","tkinterweb",
            "jira","numpy","matplotlib","calendar","sys","math","math","parser","pyautogui","dateutil","xlwt"]
for x_imp in listimport:
    try:
        import x_imp
    except ImportError as e:
        os.system('pip install ' + x_imp)

这总是尝试安装所有模块,即使它们已经存在,有什么想法吗?

当您导入一个模块时,您可以这样做:

import request

使用您的程序,您将尝试像这样导入每个 string

import "request"

因为listimport包含字符串!所以你每次都会得到一个错误!

您可以使用 __import__ 修复它,但在 string:

上做同样的事情
import os

listimport = ["request","shutil","shutil","styless","time","tkinter","openpyxl","html","datetime","importlib","string",
      "easygui","bs4","webbrowser","glob","tarfile","webbrowser","pathlib","platform","subprocess","tkinterweb",
            "jira","numpy","matplotlib","calendar","sys","math","math","parser","pyautogui","dateutil","xlwt"]

for x_imp in listimport:
    try:
        __import__(x_imp)
    except ImportError as e:
        os.system('pip install ' + x_imp)

您正在尝试导入字符串,例如 import "numpy"。一个简单的解决方案是使用 exec()

listimport=["request","shutil","shutil","styless","time","tkinter","openpyxl","html","datetime","importlib","string",
      "easygui","bs4","webbrowser","glob","tarfile","webbrowser","pathlib","platform","subprocess","tkinterweb",
            "jira","numpy","matplotlib","calendar","sys","math","math","parser","pyautogui","dateutil","xlwt"]

for x_imp in listimport:
    try:
        exec('import {}'.format(x_imp))
    except ImportError:
        os.system('pip install ' + x_imp)