在Ubuntu 16.04和Windows 7(pip 18.1,python 2.7.15)上,我都遇到一个问题,其中我有package data
进入tar.gz文件,但是没有安装当我使用pip安装时,将其添加到我的脚本目录。我在Windows上的脚本目录是\Python27\Scripts
。我还签入了site-packages
,但文件未显示在此处。通过pip安装时,我希望在python脚本旁边显示一个文本文件,我认为使用data_files
并不能达到这一目的(根据
setup.py not installing data files吗?
我的程序包结构将所有文件(hello.py, MANIFEST.IN, setup.py
)放在一个名为fakeapp
的根文件夹中。我想保留这种结构,因为我实际上要修复的项目具有这种结构。
我查找了许多答案并尝试过:
__init__.py
,但这并不能解决问题。include_package_files=True
无济于事package_data={'':['texto.txt']}
以及include texto.txt
添加到MANIFEST.in
无济于事。我确定这是一个重复的问题,但我无法获得任何可行的解决方案。
所以这是我的测试用例: setup.py
from setuptools import setup
setup(
author='hi',
author_email='hi@hi.com',
description="test",
scripts=['hello.py',],
license='MIT',
name='hi',
version='v2018.12.02',
include_package_data=True
)
hello.py:
#!/usr/bin/env python
def main():
print('hello world!')
if __name__ == '__main__':
main()
MANIFEST.in:
include texto.txt
我用
在dist /中创建了一个tar.gzpython setup.py sdist
而我的texto.txt在那个压缩包中。
然后我安装了
pip install dist\hi-2018.12.2.tar.gz
只有hello.py
进入C:\Python2.7\Scripts
我在做什么错了?
目录树:
│ hello.py
│ MANIFEST.in
│ setup.py
│ texto.txt
│
├───dist
│ hi-2018.12.2.tar.gz
│
└───hi.egg-info
dependency_links.txt
PKG-INFO
SOURCES.txt
top_level.txt
答案 0 :(得分:1)
texto.txt
实际上不是包数据,因为它不在包内(带有__init__.py
的目录),因此不会被安装。获得所需内容的最简单方法是重组代码,以使其安装软件包hello
而非平面模块hello.py
,并将hello.py
移至hello/__init__.py
并texto.txt
移至hello/texto.txt
。