Questa dovrebbe essere una domanda molto comune per gli sviluppatori che hanno utilizzato "setup.py" per creare pacchetti di installazione e che dovrebbe essere richiesto prima, ma non sono riuscito a trovare la risposta corretta da nessuna parte.Qualsiasi funzione python per ottenere la directory radice "data_file"?
In setup.py
from distutils.core import setup
setup(
....,
....,
data_files=[('MyApp/CBV', ['myapp/data/CBV/training.cbv', 'myapp/data/CBV/test.cbv'])],
....,
....,
)
Risultato di sudo python setup.py install
running install
running build
running build_py
running build_scripts
running install_lib
running install_scripts
running install_data
creating /usr/local/MyApp/CBV
copying MyApp/data/CBV/training.cbv -> /usr/local/MyApp/CBV
copying MyApp/data/CBV/test.cbv -> /usr/local/MyApp/CBV
running install_egg_info
Removing /usr/local/lib/python2.7/dist-packages/MyApp-0.1.0.egg-info
Writing /usr/local/lib/python2.7/dist-packages/MyApp-0.1.0.egg-info
Dall'osservazione con il risultato di cui sopra, "/ usr/local" è la directory root "data_files". Oltre alla codifica, esistono alcune funzioni Python che possono darmi questa directory root "data_files"?
Con suggerimento da Martijn Pieters, ecco la mia soluzione
In setup.py
from setuptools import setup
setup(
....,
....,
package=['myapp'],
package_data={'': ['data/CBV/*.cbv']},
....,
....,
)
Uso
import pkg_resources
my_data_file = pkg_resources.resource_filename(__name__, 'data/CBV/test.cbv')
print my_data_file
Attualmente, sto usando "setup" da "distutils". Potrebbe volerci un po 'di tempo per verificare se la soluzione mi può aiutare :) –
@JessadaThutkawkorapin: Passare a 'setuptools' è abbastanza facile. :-) È retrocompatibile con 'distutils', e decisamente raccomandabile! –
Mentre cercavo la differenza tra disutils e setuptools, ho trovato http://stackoverflow.com/questions/6344076/differences-between-distribute-distutils-and-setuptools. Da quanto ho letto, sembra che il suggerimento fosse rivolto ai disutils2. Raccomandi ancora setuptools? –