我阅读了很多关于这个问题的资料,但找不到任何解决方案,所以我会再问一个关于它的问题,因为我什至不确定我是否为我的 Python 包使用了正确的文件夹结构。
所以基本上我正在开发一个使用 Tornado 网络服务器框架的应用程序,我想打包它,以便用户可以通过 pip
安装它并访问基本脚本以开始网络服务器。
目录结构如下:
├── MANIFEST.in
├── README.md
├── config
│ └── default.cfg
├── docs
│ ├── Makefile
│ ├── _build
│ ├── _static
│ ├── _templates
│ ├── conf.py
│ ├── index.rst
├── foopackage
│ ├── __init__.py
│ ├── barmodule.py
│ └── bazmodule.py
├── setup.py
├── static
│ ├── css
│ │ ├── menu.css
│ │ └── main.css
│ ├── img
│ │ └── logo.png
│ ├── js
│ │ ├── ui.js
│ │ └── navigation.js
│ └── lib
│ ├── d3.v3.min.js
│ └── jquery-1.11.0.min.js
└── templates
├── index.html
└── whatever.html
Python 代码如您在包 foopackage
中所见。
MANIFEST.in
文件递归地包含目录config
、static
、templates
和文档
。
这是我的setup.py
(只有相关部分:
from setuptools import setup
setup(name='foo',
version='0.1.0',
packages=['foopackage'],
include_package_data=True,
install_requires=[
'tornado>=3.2.2',
],
entry_points={
'console_scripts': [
'foo=foopackage.barmodule:main',
],
},
)
如果我运行 python setup.py sdist
,一切都会被很好地打包,docs
、templates
和 config
包括文件等。但是,如果我运行 pip install ...
,只会安装 foopackage
,其他所有内容都会被忽略。
如何将这些附加文件包含到安装过程中?我的目录结构可以吗?我还读到过“伪造一个包”,所以把所有东西都放在一个目录中并触摸一个 __init__.py
文件,但这对我来说似乎很奇怪:-\
最佳答案
我通过将 static
目录移动到实际的 Python 模块目录 (foopackage
) 解决了这个问题。否则似乎忽略了顶级“非包”文件夹。
关于python - Pip install 忽略 MANIFEST.in 中的文件 - 如何正确构建项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24885424/