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

时间:2019-10-30 06:10:55

标签: python pip subprocess

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

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

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

我遇到错误:

ModuleNotFoundError: No module named 'pyparsing'

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

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

2 个答案:

答案 0 :(得分:1)

本质上,您将pyparsing作为变量而不是字符串传递,以将pyparsing的此更改修复为“ pyparsing”

尝试一下:

pip list -- user

答案 1 :(得分:0)

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

  

importlib.invalidate_caches()

     

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