有没有办法使用脚本从 pypi 下载源代码?

Is there a way to download the source from pypi using a script?

通过浏览器访问 pypi 上提供的链接(例如:https://pypi.python.org/packages/source/p/py-web-search/py-web-search-0.2.1.tar.gz#md5=4e2f7363acdc1e7c08629edfa7996a5a),我们可以下载源代码。 有没有办法从脚本中做到这一点?

到目前为止我有这个:

import requests
s = requests.get('https://pypi.python.org/packages/source/p/py-web-search/py-web-search-0.2.1.tar.gz#md5=4e2f7363acdc1e7c08629edfa7996a5a')
with open('pws.tar.gz', 'w') as fp:
    fp.write(s.text)

注意:以二进制模式打开文件会导致此错误TypeError: 'str' does not support the buffer interface

当我使用存档管理器打开 tar 文件时,它提示加载存档时出错。

我尝试打印 s.text,然后将输出重定向到 pws.tar.gz,但没有任何区别。

This post 似乎认为它可以在二进制模式下打开它,使用 write(bytes(s.text, 'UTF-8')) 也可以。

它是可选的(如果你想下载一个非常大的文件,那么你可以打开它)stream=True

import requests
s = requests.get('https://pypi.python.org/packages/source/p/py-web-search/py-web-search-0.2.1.tar.gz#md5=4e2f7363acdc1e7c08629edfa7996a5a',stream=True)

with open('pws.tar.gz', 'wb') as fp:
    for chunk in s.iter_content(): 
        if chunk:
            fp.write(chunk)
            fp.flush()