如何从 Django 应用程序创建一个轮子?
How do I create a wheel from a django app?
可重复使用的应用程序文档 (https://docs.djangoproject.com/en/1.9/intro/reusable-apps/) 告诉您在 MANIFEST.in
中列出模板和静态文件,但看起来 python setup.py bdist_wheel
根本没有查看该文件。
我看到了对 data_files
的引用,但这些文件位于与 python 安装(sys.prefix
)相关的目录中,而不是软件包安装(和 sys.prefix
与跨系统的 site-packages
不一致)。
我假设 myapp/templates/myapp/foo.html
应该以 .../site-packages/myapp/templates/myapp/foo.html
结尾并且对于静态文件也是如此,并且用户需要 运行 一个 manage.py collectstatic
在 pip install myapp
?
更新(示例):
结构如下:
(build2) go|c:\srv\tmp\myapp> tree
.
|-- MANIFEST.in
|-- myapp
| |-- static
| | `-- myapp
| | `-- foo.css
| |-- templates
| | `-- myapp
| | `-- foo.html
| |-- urls.py
| `-- views.py
`-- setup.py
5 directories, 6 files
setup.py
import setuptools
from distutils.core import setup
setup(
name='myapp',
version='0.1.0',
packages=['myapp']
)
MANIFEST.in
recursive-include myapp/templates *
recursive-include myapp/static *
运行ning python setup.py sdist
和 python setup.py bdist_wheel
创建以下文件 bin myapp/dist:
2016-06-18 13:47 2,073 myapp-0.1.0-py2-none-any.whl
2016-06-18 13:46 2,493 myapp-0.1.0.zip
如果您查看 .zip 文件,您将找到模板和静态文件夹,如果您将 .whl 文件重命名为 .zip 并查看其中,则不包括这些目录。
更新2(解决方案):
正在将 MANIFEST.in 文件更改为
recursive-include myapp *
和setup.py到
from setuptools import find_packages, setup
setup(
name='myapp',
version='0.1.0',
include_package_data=True,
packages=['myapp'],
zip_safe=False,
)
然后 运行ning python setup.py bdist_wheel
将创建一个 .whl
文件,在预期的位置安装 myapp/templates
和 myapp/static
。
MANIFEST.in
文件需要修改为:
recursive-include myapp *
这包括 myapp/myapp
下具有正确路径的所有内容。特别是,这包括 myapp/myapp/templates
,这是必要的。
上面的声明还包括 myapp/myapp/static
,如果您打算在安装 .whl
文件后 运行 manage.py collectstatic
,这可能会有用。
在setup.py
中,setup
函数需要从setuptools
(而不是distutils)导入,即:
from setuptools import find_packages, setup
setup(
name='myapp',
version='0.1.0',
include_package_data=True,
packages=['myapp'],
zip_safe=False,
)
当您现在 运行 python setup.py bdist_wheel
时,它将创建一个 .whl
文件,在预期的位置安装 myapp/templates
和 myapp/static
。
可重复使用的应用程序文档 (https://docs.djangoproject.com/en/1.9/intro/reusable-apps/) 告诉您在 MANIFEST.in
中列出模板和静态文件,但看起来 python setup.py bdist_wheel
根本没有查看该文件。
我看到了对 data_files
的引用,但这些文件位于与 python 安装(sys.prefix
)相关的目录中,而不是软件包安装(和 sys.prefix
与跨系统的 site-packages
不一致)。
我假设 myapp/templates/myapp/foo.html
应该以 .../site-packages/myapp/templates/myapp/foo.html
结尾并且对于静态文件也是如此,并且用户需要 运行 一个 manage.py collectstatic
在 pip install myapp
?
更新(示例):
结构如下:
(build2) go|c:\srv\tmp\myapp> tree
.
|-- MANIFEST.in
|-- myapp
| |-- static
| | `-- myapp
| | `-- foo.css
| |-- templates
| | `-- myapp
| | `-- foo.html
| |-- urls.py
| `-- views.py
`-- setup.py
5 directories, 6 files
setup.py
import setuptools
from distutils.core import setup
setup(
name='myapp',
version='0.1.0',
packages=['myapp']
)
MANIFEST.in
recursive-include myapp/templates *
recursive-include myapp/static *
运行ning python setup.py sdist
和 python setup.py bdist_wheel
创建以下文件 bin myapp/dist:
2016-06-18 13:47 2,073 myapp-0.1.0-py2-none-any.whl
2016-06-18 13:46 2,493 myapp-0.1.0.zip
如果您查看 .zip 文件,您将找到模板和静态文件夹,如果您将 .whl 文件重命名为 .zip 并查看其中,则不包括这些目录。
更新2(解决方案):
正在将 MANIFEST.in 文件更改为
recursive-include myapp *
和setup.py到
from setuptools import find_packages, setup
setup(
name='myapp',
version='0.1.0',
include_package_data=True,
packages=['myapp'],
zip_safe=False,
)
然后 运行ning python setup.py bdist_wheel
将创建一个 .whl
文件,在预期的位置安装 myapp/templates
和 myapp/static
。
MANIFEST.in
文件需要修改为:
recursive-include myapp *
这包括 myapp/myapp
下具有正确路径的所有内容。特别是,这包括 myapp/myapp/templates
,这是必要的。
上面的声明还包括 myapp/myapp/static
,如果您打算在安装 .whl
文件后 运行 manage.py collectstatic
,这可能会有用。
在setup.py
中,setup
函数需要从setuptools
(而不是distutils)导入,即:
from setuptools import find_packages, setup
setup(
name='myapp',
version='0.1.0',
include_package_data=True,
packages=['myapp'],
zip_safe=False,
)
当您现在 运行 python setup.py bdist_wheel
时,它将创建一个 .whl
文件,在预期的位置安装 myapp/templates
和 myapp/static
。