我的 Python 包具有以下结构:
$ tree -d | grep -v "__pycache__"
.
├── src
│ ├── poliastro
│ │ ├── iod
│ │ ├── tests
│ │ └── twobody
│ │ └── tests
├── setup.py
└── MANIFEST.in
47 directories
Buf 在执行 python setup.py build
之后,最里面的 test
目录没有被复制:
$ tree -d | grep -v "__pycache__"
.
├── build
│ ├── lib
│ │ └── poliastro
│ │ ├── iod
│ │ ├── tests
│ │ └── twobody
相反,python setup.py sdist
可以正常工作。
到目前为止,我已经使用 MANIFEST.in
规则从 sdist 中包含或排除某些文件、模式和目录。有没有办法控制 build
目录的内容?为什么有些测试成功了,有些却没有?
引用原始问题和源代码:https://github.com/poliastro/poliastro/issues/129
最佳答案
您的 setup()
缺少 include_package_data=True
。请参阅我制作的此 PR https://github.com/poliastro/poliastro/pull/139
讨论:如果没有这个,非 python 包文件(例如您列出的不在“包中”的测试 py 文件)默认情况下不包含,即使它们在技术上是包含在其他 Python 包目录中的一部分树。
/HTH
关于python setup.py 构建忽略一些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38384677/