我无法将项目 package_fiddler
正确安装到我的虚拟环境中。
我发现 MANIFEST.in
负责将非 .py 文件放入 Package_fiddler-0.0.0.tar.gz
在执行 python setup.py sdist
时生成。
然后我做了:
(virt_envir)$ pip install dist/Package_fiddler-0.0.0.tar.gz
但这并没有将数据文件或包安装到 /home/username/.virtualenvs/virt_envir/local/lib/python2.7/site-packages
。
我尝试了很多设置参数 package_data
、include_package_data
和 data_files
的配置,但我似乎每次都使用了错误的配置。
package_data
和/或 include_package_data
和/或 data_files
的哪个配置将正确安装 package_fiddler
到我的虚拟环境?
项目树
.
├── MANIFEST.in
├── package_fiddler
│ ├── data
│ │ ├── example.html
│ │ └── stylesheets
│ │ └── example.css
│ └── __init__.py
├── README.rst
└── setup.py
setup.py
from setuptools import setup
setup(
name='Package_fiddler',
entry_points={
'console_scripts': ['package_fiddler = package_fiddler:main', ],},
long_description=open('README.rst').read(),
packages=['package_fiddler',])
MANIFEST.in
include README.rst
recursive-include package_fiddler/data *
我尝试了哪些 setup.py(上面的代码库)的配置?
配置1
添加:
package_data={"": ['package_fiddler/data/*',]}
配置2
添加:
package_data={"": ['*.html', '*.css', '*.rst']}
配置3
添加:
include_package_data=True
配置4
添加:
package_data={"": ['package_fiddler/data',]}
删除:
packages=['package_fiddler',]
配置5(Chris的建议)
添加:
package_data={"data": ['package_fiddler/data',]}
删除:
packages=['package_fiddler',]
配置6
添加:
package_data={"": ['package_fiddler/data/*',]}
删除:
packages=['package_fiddler',]
这些配置都会导致在 /home/username/.virtualenvs/virt_envir/local/lib/python2.7/site-packages
上根本没有安装任何文件。
编辑
注意 Toshio Kuratomi:
在我原来的帖子中,为了清楚起见,我使用了最简单的树结构,但实际上我的树看起来更像下面的树。对于那棵树,奇怪的是,如果我只将 __init__.py
放在 stylesheets
中,texts
文件夹中的所有数据文件也会以某种方式正确安装! !!这让我很困惑。
Tree 2(这会以某种方式正确安装所有数据文件!!)
.
├── MANIFEST.in
├── package_fiddler
│ │── stylesheets
| | ├── __init__.py
| | ├── example.css
| | └── other
| | └── example2.css
| |__ texts
| | ├── example.txt
| | └── other
| | └── example2.txt
│ └── __init__.py
├── README.rst
└── setup.py
最佳答案
找到适合我的解决方案 here .
使用 setuptools==2.0.2
我做了:
setuptools.setup(
...
packages=setuptools.find_packages(),
include_package_data=True, # use MANIFEST.in during install
...
)
关于Python打包: Data files are put properly in tar. gz文件但没有安装到虚拟环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288188/