【问题标题】:python install package as sub-package of another packagepython安装包作为另一个包的子包
【发布时间】:2014-07-05 02:37:19
【问题描述】:

我正在使用 eclipse / pydev 在 python 2.7 中开发一个程序(“homie”),其中包含与外部 API 提供程序的多个接口。这些继承了位于__init__.pyhomie.interfaces 内的通用接口类

所有这些接口现在都应该包含在homie.interfaces 的子包中,例如homie.interfaces.foohomie.interfaces.bar。 遵循分而治之的概念,我为每个接口实现创建了新项目,包含各自的包,例如foo,分别为bar

现在的问题是,我的setup.py 脚本在安装过程中当然找不到包myprogram.interfaces.foo。 示例:worknet 接口

#! /usr/bin/env python

from distutils.core import setup

setup(
    name='Worknet-DBs Interface',
    version='0.1-indev',
    author='Richard Neumann',
    author_email='mail@richard-neumann.de',
    packages=['homie.interfaces.worknet'],
    data_files=[],
    license=open('LICENSE.txt').read(),
    description='Interface implementation for the Worknet APIs',
    long_description=open('README.txt').read(),
)

将产生:

[neumannr@neumann-homeinfo worknet.tmp]$ python ./setup.py install
running install
running build
running build_py
error: package directory 'homie/interfaces/worknet' does not exist
[neumannr@neumann-homeinfo worknet.tmp]$ 

如果我只指定worknet 而不是homie.interfaces.worknet,它当然会安装到homie.interfaces 的用户库中。 如何告诉脚本将worknet 包安装到homie.interfaces,所以它的路径是homie.interfaces.worknet

【问题讨论】:

    标签: python package installation


    【解决方案1】:

    package_dir指向你的包目录

    package_dir 参数可以提供关于在哪里可以找到包的信息。

    指向现有的worknet 目录

    假设worknet 目录直接在您的项目根目录中,您应该将参数package_dir 添加到您的setup 调用中

    package_dir = {'homie.interfaces': ''}
    

    将包移动到子目录homie/interfaces

    另一种选择是,重新组织代码目录。例如,您创建一个路径 homie/interfaces/ 并将现有的 worknet 子目录移动到其中。

    在这种情况下,你会添加

    package_dir = {'homie.interfaces': 'homie/interfaces'}
    

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 2021-03-25
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多