Python" setup.py开发"为什么我的数据包不可用?

时间:2015-04-23 09:20:16

标签: python setuptools

我遇到一个问题,即在setup.py开发后我无法访问我的数据包。这是我的设置:

setup.py

from setuptools import setup, find_packages
from posixpath import join, relpath, normpath
import os

setup(
    name         = 'poc_datapath',
    version      = '1.0',
    package_dir  = { '' : 'target/python', 'resources' : 'target/res'},
    packages     = find_packages(where='target/python') + ['resources'],
    package_data = { 'resources' : [normpath(join(relpath(root.replace('\\','/'), 'target/res'),fn)) 
                                             for root, _, fnames in os.walk('target/res') for fn in fnames
                                             if not fn.endswith(".py")] },
)

生成一个SOURCES.txt对我来说很好看,就像那样:

setup.py
target/res/__init__.py
target/res/resources1/resource.data
target/res/resources2/resource.data
target/python/poc_datapath.egg-info/SOURCES.txt
target/python/package1/__init__.py
target/python/package1/code.py
target/python/package2/__init__.py
target/python/package2/code.py

访问package1和package2按预期工作,但我无法导入资源包。这是为什么?它早期使用类似的配置和单个数据文件,没有子文件夹

[编辑]

也许我没说清楚: 执行import resources已经失败,尽管该文件夹中有__init__.py

2 个答案:

答案 0 :(得分:1)

setup.py develop仅仅没有正确支持package_dir,请参阅https://bitbucket.org/pypa/setuptools/issue/230

如果文件夹的名称与包名不同(如果文件夹的名称不同),它将无法工作。

答案 1 :(得分:0)

您需要在每个需要访问的子文件夹中创建一个{{1}}文件。你已经用包1和包2做了。