Setup.py не устанавливает мои package_data - PullRequest
0 голосов
/ 25 декабря 2018

В Ubuntu 16.04 и Windows 7 (pip 18.1, python 2.7.15) я столкнулся с проблемой, когда у меня есть package data, которая пробивается в файл tar.gz, но они не устанавливаются в мойКаталог скриптов при установке с помощью pip.Мой каталог скриптов на Windows \Python27\Scripts.Я также зарегистрировался в site-packages, и файл там не отображается.Я хочу, чтобы текстовый файл появлялся рядом со скриптами Python при установке через pip, и я думаю, что использование data_files не позволяет этого достичь (в соответствии с setup.py не устанавливает файлы данных ?

В моей структуре пакета все файлы (hello.py, MANIFEST.IN, setup.py) находятся в одной корневой папке с именем fakeapp. Я хотел бы сохранить эту структуру как проект, который я на самом деле пытаюсь исправить, имеет такую ​​структуру.

Iпросмотрел много ответов и попытался:

  • добавить пустую __init__.py в корень репозитория, но это не помогло.
  • Я пытался добавлять и удалятьinclude_package_files=True безрезультатно
  • Я пытался указать package_data={'':['texto.txt']}, а также
    , добавив include texto.txt к MANIFEST.in безрезультатно.
  • Этот ответ : предлагает использовать 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()

МАНИФЫT.in:

include texto.txt

Я создал tar.gz в dist / with

python setup.py sdist

, и мой texto.txt находится в этом tarball.

, а затемя установил с

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 голосов
/ 25 декабря 2018

texto.txt на самом деле не является данными пакета, так как он не находится внутри пакета (каталог с __init__.py) и, следовательно, он не будет установлен.Самый простой способ получить то, что вам нужно, - это реструктурировать ваш код так, чтобы он устанавливал пакет hello вместо плоского модуля hello.py, с перемещением hello.py в hello/__init__.py и перемещением texto.txt в hello/texto.txt.

...