【问题标题】:How to package my python program so the user can install it using setup.py如何打包我的 python 程序,以便用户可以使用 setup.py 安装它
【发布时间】:2020-04-27 00:34:48
【问题描述】:

我现在有一个 python 文件,我被要求将它转换成一个 python 模块,用户可以使用 python setup.py install 安装它。我不知道该怎么做。我按照网上的一些说明创建了 setup.py 文件和 init.py 文件。 setup.py 文件如下所示:

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="",
    version="0.0.1",
    author="",
    author_email="",
    description="",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',
)

我不确定这个 setup.py 文件是否正确。我也不知道接下来我应该做什么。谁能帮助我并告诉我该怎么做?有教程教这个吗?我真的找不到任何相关的东西。我的 setup.py 也是正确的吗?谢谢!

【问题讨论】:

标签: python setuptools setup.py


【解决方案1】:

有几种方法可以进行打包。 python.org 上的packaging Python Projectssetuptools docs 是一个好的开始。

不幸的是,示例往往侧重于包分发,而不是单个模块。使用 py_modules 关键字代替 packages。假设你的模块被称为“test.py”,这个 setup.py 将工作

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="test",
    version="0.0.1",
    author="",
    author_email="",
    description="",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",
    py_modules = ["test"],
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',
)

如果您认为这将扩展到多个模块,那么您可以返回使用 setuptools.find_packages()。在这种情况下,您需要一个以所需包命名的子目录并将 init 放在那里

some_random_project_file
    +-- setup.py
        README.md
        LICENCE
    +-- test
        +-- __init__.py
            test.py

【讨论】:

  • 好答案,我想我会避免使用 test 这个名字,因为这些文件和目录的处理方式可能有所不同,具体取决于上下文(自动添加到 MANIFEST,自动查找单元测试)。
猜你喜欢
  • 2010-11-07
  • 1970-01-01
  • 2017-05-29
  • 2014-02-06
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多