无法安装使用相同名称空间的两个软件包

当单独使用setup.py安装两个软件包时,它们的安装就很好。提取sdist生成的tarball并安装它们时,会发生相同的错误。这意味着问题出在我猜的setuptools内部。


我开发了两个具有两个名称空间包的项目:testsuite和testsuite.prettyprint。这两个名称空间包__init__.py都包含:


__import__('pkg_resources').declare_namespace(__name__)

这是testsuite.prettyprint.outcomes的setup.py:


import pkgutil

from setuptools import setup



def get_packages():

    return [name for _, name, is_package in pkgutil.walk_packages('.') if name.startswith('testsuite') and is_package]


dependencies = ['nose2>=0.4.6', 'colorama>=0.2.5']


setup(

    name='testsuite-prettyprint-outcomes',

    version='0.1.0-alpha.1',

    packages=get_packages(),

    url='',

    license='BSD3',

    author='Omer Katz',

    author_email='omer.drow@gmail.com',

    description='testsuite-prettyprint-outcomes is a nose2 plugin that prettyprints test outcomes.',

    namespace_packages=['testsuite', 'testsuite.prettyprint'],

    install_requires=dependencies

)

这是testsuite.prettyprint.traceback的setup.py:


import pkgutil

import sys


from setuptools import setup



def get_packages():

    return [name for _, name, is_package in pkgutil.walk_packages('.') if name.startswith('testsuite') and is_package]


dependencies = ['nose2>=0.4.6', 'pygments>=1.6']


if sys.platform == 'win32':

    dependencies.append('colorama>=0.2.5')


setup(

    name='testsuite-prettyprint-traceback',

    version='0.1.0-alpha.2',

    packages=get_packages(),

    url='',

    license='BSD3',

    author='Omer Katz',

    author_email='omer.drow@gmail.com',

    description='testsuite-prettyprint-traceback is a nose2 plugin that prettyprints traceback on failures and errors.',

    namespace_packages=['testsuite', 'testsuite.prettyprint'],

    install_requires=dependencies

)


慕姐8265434
浏览 194回答 3
3回答

慕桂英3389331

name您的软件包的s看起来不对。我只是将一个项目分成多个子包,而我做的另一件事是使每个项目name与的组件匹配namespace_packages。因此,对于testsuite.prettyprint.outcomes:setup(       name='testsuite.prettyprint.outcomes',       [...] ,       namespace_packages=['testsuite', 'testsuite.prettyprint'])对于testsuite.prettyprint.traceback:setup(       name='testsuite.prettyprint.traceback',       [...] ,       namespace_packages=['testsuite', 'testsuite.prettyprint'])为了使此功能正常运行,您需要__init__.py为所有父namespace_package级(例如到)提供脚本,就像已经显示的那样testsuite.prettyprint。namespace_packages在zope子软件包中可以找到生产软件包的很好的例子。例如,请参见zope.app.cache setup.py脚本,网址为http://svn.zope.org/zope.app.cache/trunk/setup.py?view=markup
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python