如何将其他文件包含到包中?
How to include additional files into a package?
如何将未写入 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',
],
)
当我在 Whosebug 上的某处阅读时,我尝试将以下内容添加到 setup.py
文件中,但没有任何区别。
package_data = {
'templates': ['*'],
}
可能与此
重复
include_package_data=True
序言。 “包”这个词用得太重了。我将使用 "importable package" 这个词的意思,即带有 __init__.py
.
的目录
我发现您的代码有两个问题。首先,您使用 distutils
这是一个过时的过时包。它将从 Python 中删除。你早就应该切换到 setuptools
了。所以替换行
from distutils.core import setup
和
from setuptools import setup
第二题在
package_data = {
'templates': ['*'],
}
字典中的键是包,而不是目录名。您的 templates
不是一个包(不是 __init__.py
)而是一个数据目录。所以包含它的方式是
package_data = {
'projectname': ['templates/*'],
}
如何将未写入 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',
],
)
当我在 Whosebug 上的某处阅读时,我尝试将以下内容添加到 setup.py
文件中,但没有任何区别。
package_data = {
'templates': ['*'],
}
可能与此
include_package_data=True
序言。 “包”这个词用得太重了。我将使用 "importable package" 这个词的意思,即带有 __init__.py
.
我发现您的代码有两个问题。首先,您使用 distutils
这是一个过时的过时包。它将从 Python 中删除。你早就应该切换到 setuptools
了。所以替换行
from distutils.core import setup
和
from setuptools import setup
第二题在
package_data = {
'templates': ['*'],
}
字典中的键是包,而不是目录名。您的 templates
不是一个包(不是 __init__.py
)而是一个数据目录。所以包含它的方式是
package_data = {
'projectname': ['templates/*'],
}