如何在我的项目分发中包含包子文件夹?
Posted
技术标签:
【中文标题】如何在我的项目分发中包含包子文件夹?【英文标题】:How to include package sub-folders in my project distribution? 【发布时间】:2013-03-17 00:44:56 【问题描述】:我有一个具有这种结构的项目:
SomeProject/
bin/
CHANGES.txt
docs/
LICENSE.txt
MANIFEST.in
README.txt
setup.py
someproject/
__init__.py
location.py
utils.py
static/
javascript/
somescript.js
还有一个“setup.py”如下:
#!/usr/bin/env python
import someproject
from os.path import exists
try:
from setuptools import setup, find_packages
except ImportError:
from distutils.core import setup, find_packages
setup(
name='django-some-project',
version=someproject.__version__,
maintainer='Some maintainer',
maintainer_email='some@manteiner.com',
packages=find_packages(),
include_package_data=True,
scripts=[],
url='https://github.com/xxx/some-project',
license='LICENSE',
description='Some project description.',
long_description=open('README.markdown').read() if exists("README.markdown") else "",
install_requires=[
"Django >= 1.4.0"
],
)
然后,当我使用命令上传它时:
python setup.py sdist upload
看起来没问题,但是包中没有带有“javascript”子文件夹的“静态”文件夹。我的“setup.py”的灵感来自具有类似结构的 github.com/maraujop/django-crispy-forms。关于上传此子文件夹有什么问题的任何提示?
【问题讨论】:
【参考方案1】:使用以下
packages = ['.','templates','static','docs'],
package_data='templates':['*'],'static':['*'],'docs':['*'],,
【讨论】:
【参考方案2】:您应该能够通过编辑 MANIFEST.in
文件添加如下行来将这些文件添加到源代码分发中:
recursive-include someproject/static *.js
或者只是:
include someproject/static/javascript/*.js
这足以让文件包含在源代码发行版中。如果您使用的 setuptools include_package_data
选项不足以安装文件,您可以在 setup.py
中使用类似这样的内容要求明确安装它们:
package_data='someproject': ['static/javascript/*.js'],
【讨论】:
詹姆斯,我的回答取得了一些进展。上传后包中的文件丢失,现在都在 tar.gz 文件中。但是,当我 pip install 软件包时,文件又消失了!以上是关于如何在我的项目分发中包含包子文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 cmake 项目中包含另一个 cmake 项目的头文件?
如何在我的 gradle java 项目中包含外部 .jar? [复制]
如何在我的项目中包含 Bootstrap 3 和 JQuery 数据表?