在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()


清单在:

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

最佳答案

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

关于python - Setup.py没有安装我的package_data,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53925027/

10-12 22:19
查看更多