To powinno być bardzo częste pytanie dla programistów, którzy użyli "setup.py" do budowania pakietów instalacyjnych i powinien on zostać zapytany wcześniej, ale nigdzie nie mogłem znaleźć właściwej odpowiedzi.Dowolna funkcja pythona, aby uzyskać katalog główny "data_files"?
W setup.py
from distutils.core import setup
setup(
....,
....,
data_files=[('MyApp/CBV', ['myapp/data/CBV/training.cbv', 'myapp/data/CBV/test.cbv'])],
....,
....,
)
Wynik sudo python setup.py zainstalować
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
z obserwacji stosując powyższy wynik "/ usr/local" jest katalog główny "data_files". Czy oprócz funkcji hardcoding istnieją jakieś funkcje Pythona, które mogą dać mi ten katalog główny "data_files"?
Z sugestią Martijn Pieters, tu jest moje rozwiązanie
W setup.py
from setuptools import setup
setup(
....,
....,
package=['myapp'],
package_data={'': ['data/CBV/*.cbv']},
....,
....,
)
Wykorzystanie
import pkg_resources
my_data_file = pkg_resources.resource_filename(__name__, 'data/CBV/test.cbv')
print my_data_file
Obecnie używam „setup” z „distutils”. Sprawdzanie, czy Twoje rozwiązanie może mi pomóc, może trochę potrwać :) –
@JessadaThutkawkorapin: Przejście na "setuptools" jest dość łatwe. :-) Jest wstecznie kompatybilny z 'distutils' i zdecydowanie godny polecenia! –
Podczas gdy szukałem różnicy między disutils i setuptools, znalazłem http://stackoverflow.com/questions/6344076/differences-between-distribute-distutils-and-setuptools. Z tego, co z grubsza czytałem, wynika, że sugestia zmierzała w kierunku disutils2. Czy nadal polecasz setuptools? –