我正试图编写我的setup.py
来安装一个带有pip
的Flask应用程序。Python有大量的非静态数据包来安装。我需要递归地包含这些文件,因为有许多嵌套的子目录,例如在下面的示例中的bootstrap/
中:
myproject
├── MANIFEST.in
├── setup.py
└── myproject/
└── app/
├── __init__.py
├── static/
| ├── bootstrap/ (*)
| | └── ...
| ├── some.json
| └── other.json
└── templates/
└── index.html
似乎主要有两种方法可以做到这一点,但我不能得到任何一种方法工作。在
MANIFEST.in
和{以及MANIFEST.in
中的以下内容:
recursive-include myproject *.json *.html
后跟我的项目根目录中的pip install .
。此方法根本不安装任何包数据文件。事实上,它似乎忽略了我的MANIFEST.in
,因为我尝试了graft
,exclude
等等,它们似乎没有效果。在
package_data
与自定义递归查找函数一起使用# setup.py
EXTENSIONS = ['*.js', '*.html']
def recursive_get_package_data():
matches = []
THIS_FILE_DIR = os.path.dirname(os.path.realpath(__file__))
for ext in EXTENSIONS:
for root, dirnames, filenames in os.walk(THIS_FILE_DIR):
for filename in fnmatch.filter(filenames, ext):
matches.append(os.path.join(os.path.relpath(root, THIS_FILE_DIR),
filename))
return matches
setup_info = dict(
...
#include_package_data=False,
package_data = {'': recursive_get_package_data()},
...
}
setup(**setup_info)
后跟我的项目根目录中的pip install .
。在
此方法根本不安装任何包数据文件。但是,如果不使用来自recursive_get_package_data()
的显式相对路径,我使用扩展globs的列表,即
setup_info = dict(
...
#include_package_data=False,
package_data = {'': EXTENSIONS},
...
)
它只能安装.js
和.html
文件,其中我有__init__.py
。在
我错过了什么?我需要同时使用include_package_data
和{
更新:通过删除顶层目录,我设法使第二种方法起作用:
THIS_FILE_DIR = os.path.dirname(os.path.realpath(__file__))
THIS_FILE_DIR = os.path.join(THIS_FILE_DIR, 'myproject')
并将其作为钥匙传递给:
package_data = {'myproject': recursive_get_package_data()},
然而,仍然没有幸运的MANIFEST.in
。在
目前没有回答
相关问题 更多 >
编程相关推荐