Confezione Python: i file di dati vengono inseriti correttamente nel file tar.gz ma non vengono installati nell'ambiente virtuale




2 Answers

Ho trovato una soluzione che ha funzionato per me here .

Utilizzo di setuptools==2.0.2 Ho fatto:

setuptools.setup(
    ...
    packages=setuptools.find_packages(),
    include_package_data=True,  # use MANIFEST.in during install
    ...
)
python packaging setuptools setup.py

Non riesco a installare correttamente il package_fiddler nel mio ambiente virtuale.

Ho capito che MANIFEST.in è responsabile di inserire i file non-.py in Package_fiddler-0.0.0.tar.gz che viene generato durante l'esecuzione di python setup.py sdist .

Allora ho fatto:

(virt_envir)$ pip install dist/Package_fiddler-0.0.0.tar.gz

Ma questo non ha installato i file di dati né il pacchetto in /home/username/.virtualenvs/virt_envir/local/lib/python2.7/site-packages .

Ho provato molte configurazioni degli argomenti di setup package_data , include_package_data e data_files ma mi sembra di aver usato la configurazione sbagliata ogni volta.

Quale configurazione di package_data e / o include_package_data e / o data_files installerà correttamente package_fiddler nel mio ambiente virtuale?

Albero del progetto

.
├── 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 *

Quali configurazioni di setup.py (con codice base sopra) ho provato?

Configurazione1

Aggiunta:

package_data={"": ['package_fiddler/data/*',]}

Configuration2

Aggiunta:

package_data={"": ['*.html', '*.css', '*.rst']}

Configuration3

Aggiunta:

include_package_data=True

Configuration4

Aggiunta:

package_data={"": ['package_fiddler/data',]}

Rimozione:

packages=['package_fiddler',]

Configuration5 (suggerimento di Chris)

Aggiunta:

package_data={"data": ['package_fiddler/data',]}

Rimozione:

packages=['package_fiddler',]

Configurazione 6

Aggiunta:

package_data={"": ['package_fiddler/data/*',]}

Rimozione:

packages=['package_fiddler',]

Queste configurazioni comportano che nessun file venga installato su /home/username/.virtualenvs/virt_envir/local/lib/python2.7/site-packages .

MODIFICARE

Nota per Toshio Kuratomi : Nel mio post originale ho usato la struttura ad albero più semplice in cui questo problema si verifica per chiarezza, ma in realtà il mio albero assomiglia più all'albero sottostante. Per quell'albero, stranamente se metto solo __init__.py in stylesheets di stylesheets qualche modo tutti i file di dati nella cartella dei texts sono installati correttamente !!! Questo mi confonde.

Albero 2 (Questo installa tutti i file di dati correttamente in qualche modo !!)

.
├── MANIFEST.in
├── package_fiddler
│   │── stylesheets
|   |     ├── __init__.py
|   |     ├── example.css  
|   |     └── other
|   |          └── example2.css
|   |__ texts
|   |     ├── example.txt  
|   |     └── other
|   |          └── example2.txt
│   └── __init__.py
├── README.rst
└── setup.py



Questo funziona per me. Spero che sia d'aiuto.

package_data={
    "package_fiddler": [
        '\*.\*',
        '\*/\*.\*',
        '\*/\*/\*.\*',
    ],
},



Related