【问题标题】:How to package python modules that are not in the standard Library如何打包标准库中没有的python模块
【发布时间】:2021-01-07 21:57:00
【问题描述】:

我有一个脚本,我想在其他机器上分发,但是它有一个不属于 python 标准库的依赖模块。更具体地说,我想使用 pymysql 库。当我在本地机器上时,我可以只使用 pip install pymysql,但想知道在打包/分发我的脚本时是否还有其他选项,以便其他人不必运行 pip install pymysql。

我目前在其他机器上的错误是: ImportError: 没有名为 pymysql 的模块

【问题讨论】:

    标签: python pymysql


    【解决方案1】:

    您可以在 setup.py 文件中定义依赖项。尝试做这样的事情:

    setup(..., install_requires=['pymysql'])
    

    如果您使用setuptools 来打包您的库。这是一些文档:https://python-packaging.readthedocs.io/en/latest/dependencies.html

    这个问题可能对你有更多帮助:How to specify dependencies when creating the setup.py file for a python package

    这样做,如果有人安装了你的库,它也会自动安装所有依赖项。

    如果您需要为 GitHub 存储库定义依赖项,您可以定义一个 requirements.txt 文件并将其与存储库中的主要代码一起保存(而不是在任何文件夹中)。这就是你的样子:

    pymysql
    

    这只是包含要求的 1 行。如果还有更多,只需在下一行输入:

    pymysql
    numpy
    pandas
    

    如果有人克隆您的存储库,他们将需要在他们克隆文件的目录中执行以下命令:

    python3 -m pip install -r requirements.txt
    

    【讨论】:

    • 为了提供更多上下文,请考虑以下应用程序: /myApplication --- myScript.py --- myScript.py 中的 setup.py 我导入 pymysql。我正在尝试将其推送到 git repo 并让其他人克隆它并运行 myScript.py。他们是否只需要运行 python setup.py 来下载所有依赖项?
    • 如果您将它作为 PyPi 包上传,这个设置文件会很好用。您还可以使用 requirements.txt 文件为 GitHub 存储库定义依赖项。我会将此添加到我的答案中。
    猜你喜欢
    • 2011-09-21
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2018-04-03
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多