如何在包中包含其他文件



如何将非python编写的文件包含到包中?或者为了使其更加具体:假设我有以下包结构,我如何包含templates目录的所有文件?

- projectname
- __init__.py
- classfile.py
- templates
- file1.prototxt
- file2.caffemodel

我有以下setup.py

from distutils.core import setup
setup(
name = 'projectname',    
packages = ['projectname'], 
version = '0.1',      
license='MIT',        
description = 'my description',  
author = 'FULL NAME',                
author_email = 'example@gmail.com',     
url = 'https://github.com/repo',   
download_url = 'https://github.com/repo/.../v_01.tar.gz',
keywords = ['keywords'],  
install_requires=[      
'opencv-python',
'numpy'
],
classifiers=[
'Development Status :: 3 - Alpha',      
'Intended Audience :: Developers',      
'Topic :: Software Development :: Build Tools',
'License :: OSI Approved :: MIT License',  
'Programming Language :: Python :: 3',     
],
)

当我读到stackoverflow上的某个地方时,我尝试将以下内容添加到setup.py文件中,但没有什么不同。

package_data = {
'templates': ['*'],
}

序言。单词";包装";严重过载。我用这个词的意思是";可进口包装";,即具有CCD_ 3的目录。

我看到你的代码有两个问题。首先,您使用distutils,这是一个过时的包。它将从Python中删除。你早就应该换成setuptools了。所以更换

from distutils.core import setup

带有

from setuptools import setup

第二个问题是

package_data = {
'templates': ['*'],
}

字典中的键是,而不是目录名。您的templates不是一个包(没有__init__.py(,而是一个数据目录。所以包括的方法

package_data = {
'projectname': ['templates/*'],
}

此问题的潜在重复

include_package_data=True

最新更新