2016-01-13 48 views
0

我的目标是制作一个我已经写好的程序,以方便潜在的雇主/等。为了......展示我的技能......或其他。我不是一个计算机科学家,我从来没有写过用于安装的python模块,所以我是这方面的新手。在使用pip /其他安装程序安装之后,在python模块中加载文本文件

我已经写了一个机器学习算法,并将参数拟合到本地的数据。我想用“默认”参数分发算法,这样下载者就可以在不使用训练集的情况下将其用于“分箱”分类。我已经编写了一些方法,将参数保存到/从文本文件加载参数,我已经在我的平台上确认了这些参数。我可以简单地要求用户单独下载我提到的文件,并使用我创建的loadParameters方法来手动加载参数,但是我想让安装过程尽可能简单,以便可能评估我的人员。

我不知道如何打包文本文件,以便它们可以自动加载到我拥有的对象的__init__方法中。

我已经把算法和GitHub上here文件,并写入一个setup.py脚本,以便它可以从GitHub使用PIP这样下载: PIP安装--upgrade https://github.com/NathanWycoff/SySE/tarball/master 然而,这似乎并没有要安装包含我需要的数据的文本文件,只需要包含我的代码的__init__.py python文件。

所以我想这个问题归结为:如何强制pip下载除__init__.py中的模块之外的其他文件?或者,有没有更好的方法来加载默认参数?

回答

2

是的,有一个更好的方法,你如何使用python包分发数据文件。

首先,阅读有关正确的python包结构的东西。例如,不建议将代码放入__init__文件中。他们只是指出一个目录是一个python包,另外你可以在那里做一些import语句。所以,最好是,如果您将SySE类别(例如)文件syse.py放在该目录中,并且在__init__.py中可以使用from .syse import SySE

到数据文件。默认情况下,setuptools将只分发*.py和其他几个特殊文件(README,LICENCE等)。但是,您可以告诉setuptools您希望在软件包中分发其他文件。使用setup的kwarg package_data,更多关于那here。另外不要忘记把你所有的数据文件包含到MANIFEST.in,更多的在here

如果您正确执行上述操作,则可以使用包pkg_resources在运行时发现数据文件。 pkg_resources可以处理所有可能的情况 - 您的软件包可以通过多种方式分发,它可以从pip服务器安装,也可以从滚轮上安装,如蛋,...更多关于here

最后,如果你的软件包是公开的,我只能推荐上传到pypi(如果它不公开,你可以运行你自己的pip服务器)。在那里注册并上传你的软件包。你可以只做pip install syse从任何地方安装它。这很可能是最好的方式,如何分发你的软件包。

这是相当多的工作和阅读,但我敢肯定,你会从中受益。

希望得到这个帮助。

+0

看起来我最好坐下来仔细阅读所有链接的相关文档。非常感谢你的帮助。 –

+0

花了我一段时间,但我终于明白了,不能够感谢你。 –

+1

我很高兴它有帮助。我也在为此而战...... – ziky