【问题标题】:How does `setup.py sdist` work?`setup.py sdist` 是如何工作的?
【发布时间】:2010-12-09 12:04:06
【问题描述】:

我正在尝试使用setup.py sdist 对我的项目进行源代码分发。我已经有一个可以运行的setup.py 可以安装。但是当我执行sdist 时,我得到的只是我的my_project 文件夹中的另一个my_project 文件夹,一个我不感兴趣的MANIFEST 文件,以及一个包含两个文本文件的zip 文件,而不是我的项目.

我做错了什么? sdist 的文档在哪里?

更新:

这是我的setup.py

#!/usr/bin/env python

import os
from distutils.core import setup
import distutils
from general_misc import package_finder

try:
    distutils.dir_util.remove_tree('build', verbose=True)
except:
    pass

my_long_description = \
'''\
GarlicSim is a platform for writing, running and analyzing simulations. It can
handle any kind of simulation: Physics, game theory, epidemic spread,
electronics, etc.
'''

my_packages = package_finder.get_packages('', include_self=True,
                                          recursive=True)

setup(
    name='GarlicSim',
    version='0.1',
    description='A Pythonic framework for working with simulations',
    author='Ram Rachum',
    author_email='cool-rr@cool-rr.com',
    url='http://garlicsim.org',
    packages=my_packages,
    package_dir={'': '..'},
    license= "LGPL 2.1 License",
    long_description = my_long_description,

)

try:
    distutils.dir_util.remove_tree('build', verbose=True)
except:
    pass

【问题讨论】:

  • 运行时是否在包目录中?源码也在包目录下吗?
  • 迈克尔:是的,是的。 setup.py 与最上面的__init__.py 位于同一位置。
  • 通常 setup.py 会是上面的一个目录,其中包含 __init__.py 的包。

标签: python distutils


【解决方案1】:

Tarek Ziade 在名为“Writing a Package in Python”的 this article(已损坏的 original link)中解释了这一点以及相关的软件打包工具。

基本上,它通过以下方式创建一个简单的包 创建一个发布树,其中复制了运行包所需的所有内容。然后将此树存档在一个或多个存档文件中(通常,它只创建一个 tar 球)。存档基本上是源代码树的副本。

【讨论】:

  • 文章链接失效
  • @thanos.a 更新了指向 archive.org 快照的链接
【解决方案2】:

“sdist”命令用于创建包的“源”分发。通常,将此命令与“上传”命令结合使用,以通过 Pypi 分发包(例如)。

【讨论】:

    猜你喜欢
    • 2020-08-02
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2021-03-05
    • 2023-03-12
    • 2016-07-27
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多