rd1*_*d11 8 python pip setuptools
我想创建一些非常易于使用的 pip 包,用于在 Python 中加载常见的机器学习数据集。(是的,有些东西已经存在,但我希望它更简单。)
我想实现的是:
pip install datasetwget http://mydata.com/data.tar.gz. 请注意,数据并不驻留在 python 包本身中,而是从其他地方下载的。这个问题是关于子弹 2 和 3。有没有办法用 setuptools 做到这一点?
正如 Kevin 所暗示的,Python 包安装应该是完全可重现的,并且任何潜在的外部下载问题都应该被推送到运行时。因此,不应使用 setuptools 处理此问题。
相反,为了避免给用户带来负担,请考虑在加载时以惰性方式下载数据。例子:
def download_data(url='http://...'):
# Download; extract data to disk.
# Raise an exception if the link is bad, or we can't connect, etc.
def load_data():
if not os.path.exists(DATA_DIR):
download_data()
data = read_data_from_disk(DATA_DIR)
return data
Run Code Online (Sandbox Code Playgroud)
然后我们可以download_data在文档中进行描述,但大多数用户永远不需要理会它。这有点类似于imageio模块中关于在运行时下载必要解码器的行为,而不是让用户自己管理外部下载。