我正在使用eclipse / pydev在python 2.7中开发一个程序(“ homie”),该程序包含多个到外部API提供程序的接口。那些继承了__init__.py
中homie.interfaces
内部的通用Interface-Class
现在,所有这些接口都应包含在homie.interfaces
的子包中,例如homie.interfaces.foo
和homie.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='[email protected]',
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
的用户库instad中。如何告诉脚本将
worknet
软件包安装到homie.interfaces
中,因此其路径为homie.interfaces.worknet
? 最佳答案
通过package_dir
指向您的软件包目录package_dir
参数可以提供有关在哪里可以找到软件包的信息。
指向现有的worknet
目录
假定worknet
目录直接位于项目根目录中,则应将dd参数package_dir
放入setup
调用中
package_dir = {'homie.interfaces': ''}
将包移动到子目录
homie/interfaces
另一个选择是,您重新组织代码目录。例如,您创建一个路径
homie/interfaces/
,然后将现有的worknet
子目录移入其中。在这种情况下,您可以添加
package_dir = {'homie.interfaces': 'homie/interfaces'}
关于python - python install软件包作为另一个软件包的子软件包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23698712/