(编辑:我在写这个问题时打了错字:我在脚本中的“ pyparsing”两边加上了引号。谢谢@dswdsyd)
运行python脚本时,目标计算机上只有python标准库。当需要一个软件包时,我必须先安装它。例如,当我尝试安装pyparsing并将其导入时:
subprocess.call([sys.executable, "-m", "pip", "install", "pyparsing"])
import pyparsing
我遇到错误:
ModuleNotFoundError: No module named 'pyparsing'
那么如何在相同的python脚本中安装和导入软件包?
[更新:]在脚本的第二次运行中,可以导入软件包。奇怪。
答案 0 :(得分:1)
本质上,您将pyparsing作为变量而不是字符串传递,以将pyparsing的此更改修复为“ pyparsing”
尝试一下:
pip list -- user
答案 1 :(得分:0)
问题由importlib.invalidate_caches()
解决。根据importlib的文档:
importlib.invalidate_caches()
使的内部缓存无效 查找器存储在sys.meta_path中。如果发现者实施 invalidate_caches(),则将调用它执行 无效。如果有任何模块,则应调用此函数 在程序运行时创建/安装,以保证所有 发现者将注意到新模块的存在。