我们采取以下项目布局:
$ ls -R .
.:
package setup.py
./package:
__init__.py dir file.dat module.py
./package/dir:
tool1.dat tool2.dat
Run Code Online (Sandbox Code Playgroud)
以下内容为setup.py
:
$ cat setup.py
from distutils.core import setup
setup(name='pyproj',
version='0.1',
packages=[
'package',
],
package_data={
'package': [
'*',
'dir/*',
],
},
)
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我想在所有非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
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
Jac*_*son 20
在你的package_data
,你的'*'
glob将匹配package/dir
自己,并尝试将该目录复制为文件,导致失败.找到一个与目录不匹配的glob,沿着这些行package/dir
重写setup.py
:
from distutils.core import setup
setup(name='pyproj',
version='0.1',
packages=[
'package',
],
package_data={
'package': [
'*.dat',
'dir/*'
],
},
)
Run Code Online (Sandbox Code Playgroud)
鉴于你的榜样,这只是改变'*'
到'*.dat'
,虽然你可能需要改进你的水珠还不止这些,只是确保它不会匹配'dir'
归档时间: |
|
查看次数: |
15982 次 |
最近记录: |