在python空闲时运行pip

问题描述 投票:8回答:4

我很好奇跑点子。每次我在Windows的命令外壳中运行pip时,都这样

c:\python27\script>pip install numpy

但是,我想知道是否可以在python idle中运行它。

import pip
pip.install("numpy")

不幸的是,它不起作用。

python pip python-idle
4个回答
4
投票

这个问题是,或者应该是关于如何从python程序中运行pip。 IDLE与此版本的问题没有直接关系。

[扩展J. J. Hakala的评论:pip install pillow之类的命令行在空格处分割为sys.argv。当pip作为主要模块运行时,它将调用pip.main(sys.argv[1:])。如果一个人输入点,则可以调用pip.main(arg_line.split()),其中arg_linepip之后的命令行部分。

[去年九月(2015),我尝试使用另一个Python程序中的此意外API,并报告了关于跟踪器问题23551的初步结果。讨论和随后的结果。

在一个进程中执行多个命令的问题是,一些pip命令不仅缓存通常保持不变的sys.path,而且还缓存通常更改的已安装软件包的列表。由于pip设计为每个进程运行一个命令,然后退出,因此它永远不会更新缓存。当使用pip.main在一个进程中运行多个命令时,在缓存后给出的命令可能会使用陈旧且不再正确的缓存。例如,list之后的install显示了before the install的状态。

对于要检查pip输出的程序的第二个问题是,它进入了stdout和stderr。我发布了一个program,它将这些流捕获到程序变量中作为运行pip的一部分。

如L_Pav建议的那样,对每个pip命令使用子过程调用,尽管效率较低,但可以解决这两个问题。 communicate方法使输出流可用。请参阅子流程文档。


3
投票

目前尚无官方方法,可以使用pip.main,但当前的空闲会话不会'看到'此已安装的软件包。

how to add a "high level" programmatic API for pip上有很多讨论,这似乎很有希望。


3
投票

实际上,我认为您可以使用subprocess.Popen(apt-get numpy),尽管不确定如何使用PIP。


-1
投票

如果您在Mac上,您应该可以这样做:

  1. 转到您的IDLE。
  2. 运行帮助('模块')。
  3. 查找HTML模块。
  4. 运行帮助('HTML')
  5. 应该弹出一个文件映射,例如this / file / map / example /。
  6. 转到查找器,然后执行command + shift + g并将文件映射粘贴到此处。请删除最后一个文件,因为那样您将转到模块文件。
  7. 有所有模块。如果要添加模块,请下载模块文件并将其放在此处。

希望对您有帮助。

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