【发布时间】:2021-11-22 02:45:49
【问题描述】:
我编写了一个函数来安装运行脚本所需的模块。我的问题是每次脚本运行时都会运行该函数。我只需要在脚本第一次运行时运行该函数,这样在安装模块后,该函数就不会在每次脚本运行时运行。
我的代码是
import importlib
import subprocess
import pkg_resources
import os, time, json, datetime, sys
def import_and_install(package):
try:
importlib.import_module(package)
except (ModuleNotFoundError, pkg_resources.DistributionNotFound) as e:
print("{0} module is not installed.\n Don't worry. will take care\n".format(package))
package = [package]
subprocess.check_call([sys.executable, '-m', 'pip', 'install'] + package)
packages = ['pandas', 'numpy', 'threading', 'xlwings']
for package in packages:
import_and_install(package)
import pandas as pd
import threading
import xlwings as xw
import numpy as np
【问题讨论】:
-
...那到底是什么问题呢?脚本是否尝试运行 pip 再次安装包?
-
是的,每次代码运行时都会尝试安装包。
-
从源代码中它只会尝试安装尚未安装的包。你最好先检查一下为什么导入会引发错误
-
@user202729 他们没有提到错误,只是不希望它每次都运行。
-
@Kemp 我的意思是如果 pip install 运行,那么导入必须引发错误。