Setup.py未安装我的package_data

时间:2018-12-25 19:16:51

标签: python pip setup.py

在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无济于事。
  • This answer:建议使用bdist,该方法也不起作用。

我确定这是一个重复的问题,但我无法获得任何可行的解决方案。

所以这是我的测试用例: 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.gz
python 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

1 个答案:

答案 0 :(得分:1)

texto.txt实际上不是包数据,因为它不在包内(带有__init__.py的目录),因此不会被安装。获得所需内容的最简单方法是重组代码,以使其安装软件包hello而非平面模块hello.py,并将hello.py移至hello/__init__.pytexto.txt移至hello/texto.txt