我想创建一些非常易于使用的 pip 包,用于在 Python 中加载常见的机器学习数据集。 (是的,有些东西已经存在,但我希望它更简单。)
我想要实现的是:
- 用户运行
pip install dataset
- pip 下载数据集,例如通过
wget http://mydata.com/data.tar.gz
。请注意,数据并不驻留在 python 包本身中,而是从其他地方下载的。
- pip 从此文件中提取数据并将其放入包安装的目录中。(这并不理想,但数据集非常小,所以我们假设在这里存储数据没什么大不了的。)
- 稍后,当用户导入我的模块时,模块会自动从特定位置加载数据。
这个问题是关于项目符号 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
然后我们可以描述download_data
在文档中,但大多数用户永远不需要费心。这有点类似于imageio
模块在运行时下载必要的解码器,而不是让用户自己管理外部下载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)