【发布时间】:2010-09-14 18:59:51
【问题描述】:
让我们采用以下项目布局:
$ ls -R .
.:
package setup.py
./package:
__init__.py dir file.dat module.py
./package/dir:
tool1.dat tool2.dat
以下内容为setup.py:
$ cat setup.py
from distutils.core import setup
setup(name='pyproj',
version='0.1',
packages=[
'package',
],
package_data={
'package': [
'*',
'dir/*',
],
},
)
如您所见,我想将所有非 Python 文件包含在 package/ 和 package/dir/ 目录中。但是,运行 setup.py install 会引发以下错误:
$ python setup.py install
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/package
copying package/module.py -> build/lib/package
copying package/__init__.py -> build/lib/package
error: can't copy 'package/dir': doesn't exist or not a regular file
什么给了?
【问题讨论】:
-
这个答案给出了一个更简单的解决方案:stackoverflow.com/a/25375689/74632
-
我第二个@BorisChervenkov 评论。结合 include_package_data 和对 MANIFEST.in 的更改是更简单和更清洁的解决方案。