Python "setup.py develop" 为什么我的数据包不可用?
Python "setup.py develop" why is my data package not available?
我有一个问题,在 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
。
您需要在每个需要访问的子文件夹中创建一个 __init__.py
文件。您已经对包 1 和包 2 执行了此操作。
setup.py develop
只是不正确支持 package_dir,请参阅 https://bitbucket.org/pypa/setuptools/issue/230
如果文件夹的名称与包的名称不同,它将无法工作(如果有,它就会工作)。
我有一个问题,在 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
。
您需要在每个需要访问的子文件夹中创建一个 __init__.py
文件。您已经对包 1 和包 2 执行了此操作。
setup.py develop
只是不正确支持 package_dir,请参阅 https://bitbucket.org/pypa/setuptools/issue/230
如果文件夹的名称与包的名称不同,它将无法工作(如果有,它就会工作)。