我试图用distutils
构建一个Python发行版。不幸的是,我的目录结构如下:
/code /mypackage __init__.py file1.py file2.py /subpackage __init__.py /build setup.py
这是我的setup.py
文件:
from distutils.core import setup
setup(
name = 'MyPackage',
description = 'This is my package',
packages = ['mypackage', 'mypackage.subpackage'],
package_dir = { 'mypackage' : '../mypackage' },
version = '1',
url = 'http://www.mypackage.org/',
author = 'Me',
author_email = 'me@here.com',
)
当我运行python setup.py sdist
时,它会正确地生成清单文件,但不会在发行版中包含我的源文件。显然,它创建了一个包含源文件(即mypackage1
)的目录,然后将每个源文件复制到mypackage1/../mypackage
,这将它们置于发行版的
如果不强制我的目录结构符合distutils
的要求,我该如何更正?
从项目的根文件夹运行setup.py
在您的例子中,将setup.py放在代码/
代码/还应包括:
当您运行“setup.py sdist”时,它应该自动生成清单,包括: -py_模块和/或包中指定的任何文件 -安装程序.py -自述文件
若要添加更多文件,只需手动编辑清单文件以包含项目所需的任何其他文件。
对于这个read this有点像样的解释。
查看签出my project的工作示例。
注意:我没有将清单置于版本控制之下,所以您不会在那里找到它。
在分发存档文件中需要什么目录结构?和你现有的结构一样?
您可以使用此修改的setup.py将所有内容打包到一个更高的目录(在您的示例中为
code
):您将运行这个(在
code
目录中):或者,如果要将
dist
保留在生成中:我喜欢你想要的目录结构。我从来没有想过
setup.py
足够特殊,可以保证位于根代码文件夹中。但不管你喜不喜欢,我认为你的发行版的用户会期望它在那里。所以,你不得不欺骗distutils去做别的事情也就不足为奇了。参数data_files
是一种将setup.py放入发行版中的技巧,该发行版位于您找到它的同一位置。可能是先换到父目录了吗?
等等
或者你可以在任何地方运行它(这太过分了,但是…):
等。不确定这是否有效,但应该很容易尝试。
相关问题 更多 >
编程相关推荐