【发布时间】:2020-11-16 05:12:34
【问题描述】:
我正在尝试遍历文本文件中的包列表以获取每个包的版本。 pkgs.txt 文件中的列表如下所示:
{
"package1",
"package2",
...
}
这是我最近的代码:
with open("pkgs.txt", "r") as pkgs:
for line in pkgs:
version = subprocess.check_call([sys.executable, '-m', 'pip', 'search', line])
with open("versions.txt", "w+") as versions:
for ver in version:
version.write(ver)
我得到的错误是:CalledProcessError: Command '['/opt/conda/bin/python', '-m', 'pip, 'search', '{\n']' returned non-zero exit status 23.
问题可能是我首先需要删除引号和逗号才能循环浏览此列表吗?
【问题讨论】:
-
没有
pip.main,pip doesn't have an API,应该做subprocess.check_call([sys.executable, '-m', 'pip', 'search', line])之类的事情。 -
pip.main 似乎在我手动输入包名称时起作用。我只是想找出如何从现有文件中获取名称。
-
我知道你可能有一个旧版本的 pip,而
pip.main仍然存在。无论您拥有什么版本的 pip,该建议仍然有效。 ——其余的,我没有仔细看,似乎很简单。你到底在坚持什么? -
谢谢,我已经尝试了子进程代码,但我收到错误“返回非零退出状态 23”。也许我的代码有问题,但我不确定,因为我对 python 还是很陌生。
-
这能回答你的问题吗? How to specify install order for python pip?
标签: python-3.x csv pip