安装软件包并以相同的python脚本导入

问题描述 投票:0回答:2

((编辑:我在写这个问题时打错了:我在脚本中的“ pyparsing”周围加上了引号。谢谢@dswdsyd)

运行python脚本时,目标计算机上只有python标准库。当需要一个软件包时,我必须先安装它。例如,当我尝试安装pyparsing并将其导入时:

subprocess.call([sys.executable, "-m", "pip", "install", "pyparsing"])    
import pyparsing

我有错误:

ModuleNotFoundError: No module named 'pyparsing'

那么如何在相同的python脚本中安装和导入软件包?

[[Update:]]在脚本的第二次运行中,可以导入包。奇怪。

python pip subprocess
2个回答
1
投票
本质上,您是将pyparsing作为变量而不是字符串传递,以将pyparsing的更改固定为“ pyparsing”]

尝试一下:

import subprocess import sys subprocess.call([sys.executable, "-m", "pip", "install", "pyparsing"]) import pyparsing


0
投票
importlib.invalidate_caches()解决的问题。根据importlib的文档:

importlib.invalidate_caches()

使...的内部缓存无效查找器存储在sys.meta_path中。如果发现者实施invalidate_caches(),则将调用它执行无效。如果有任何模块,则应调用此函数在程序运行时创建/安装,以保证所有查找者将注意到新模块的存在。

© www.soinside.com 2019 - 2024. All rights reserved.