【问题标题】:Load text file in python module after installation using pip/other installer使用 pip/other 安装程序安装后在 python 模块中加载文本文件
【发布时间】:2016-04-18 14:23:29
【问题描述】:

我的目标是让潜在雇主/其他人可以轻松访问我编写的程序。为了……展示我的技能……或者其他什么。我不是计算机科学家,而且我以前从未编写过用于安装的 python 模块,所以我是这方面的新手。

我编写了一个机器学习算法,并将参数拟合到我在本地拥有的数据。我想使用“默认”参数分发算法,以便下载器可以“开箱即用”使用它进行分类,而无需训练集。我已经编写了将参数保存到文本文件/从文本文件加载参数的方法,我已经确认在我的平台上工作。我可以简单地要求用户单独下载我提到的文件,并使用我创建的 loadParameters 方法手动加载参数,但我想让可能评估我的人的安装过程尽可能简单。

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

我已经将算法和文件放在了githubhere,并编写了一个setup.py脚本,以便可以使用pip从github下载它,如下所示: pip install --upgrade https://github.com/NathanWycoff/SySE/tarball/master 但是,这似乎并没有安装包含我需要的数据的文本文件,只有包含我的代码的 __init__.py python 文件。

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

【问题讨论】:

    标签: python installation pip


    【解决方案1】:

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

    首先,阅读一些有关正确 python 包结构的信息。例如,不建议将代码放入__init__ 文件中。他们只是标记一个目录是一个 python 包,另外你可以在那里做一些import 语句。因此,如果您将 SySE 类放入该目录中的(例如)文件 syse.py__init__.py 中,则更好的是 from .syse import SySE

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

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

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

    这是一个相当多的工作和阅读,但我很确定你会从中受益。

    希望对您有所帮助。

    【讨论】:

    • 看来我最好坐下来仔细阅读您链接的所有相关文档。非常感谢您的帮助。
    • 花了我一段时间,但我终于明白了,感激不尽。
    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 2017-04-27
    • 1970-01-01
    • 2012-09-12
    • 2015-07-20
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    相关资源
    最近更新 更多