यह उन डेवलपर्स के लिए एक बहुत ही आम प्रश्न होना चाहिए जिन्होंने इंस्टॉलेशन पैकेज बनाने के लिए "setup.py" का उपयोग किया था और इसे पहले पूछा जाना चाहिए लेकिन मुझे कहीं भी उचित उत्तर नहीं मिला।किसी भी पायथन फ़ंक्शन को "data_files" रूट निर्देशिका प्राप्त करने के लिए?
sudo अजगर का setup.py
from distutils.core import setup
setup(
....,
....,
data_files=[('MyApp/CBV', ['myapp/data/CBV/training.cbv', 'myapp/data/CBV/test.cbv'])],
....,
....,
)
परिणाम में setup.py ऊपर परिणाम का उपयोग कर
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
अवलोकन से स्थापित करते हैं, "/ usr/स्थानीय" है "data_files" रूट निर्देशिका। हार्डकोडिंग के अलावा, क्या कोई पाइथन फ़ंक्शन है जो मुझे यह "data_files" रूट निर्देशिका दे सकता है?
मार्टिन पीटर्स से सुझाव के साथ , यहाँ मेरी समाधान
setup.py
from setuptools import setup
setup(
....,
....,
package=['myapp'],
package_data={'': ['data/CBV/*.cbv']},
....,
....,
)
प्रयोग
import pkg_resources
my_data_file = pkg_resources.resource_filename(__name__, 'data/CBV/test.cbv')
print my_data_file
:
फिर आप संसाधन फ़ाइलों के साथ सीधे उदाहरण के लिए
resource_string
के साथ एक स्ट्रिंग में लोड कर सकते हैं। यह जांचने में कुछ समय लग सकता है कि आपका समाधान मेरी मदद कर सकता है :) –@ जेसेडा थुतकोवाकोरैपिन: 'setuptools' पर स्विच करना काफी आसान है। :-) यह पीछे हटने योग्य 'distutils' के लिए संगत है, और निश्चित रूप से अनुशंसित! –
जबकि मैं disutils और setuptools के बीच अंतर की तलाश में था, मैंने पाया कि http://stackoverflow.com/questions/6344076/differences-between-distribute-distutils-and-setuptools। जो मैंने लगभग पढ़ा है, ऐसा लगता है कि सुझाव disutils2 की ओर जा रहा था। क्या आप अभी भी setuptools की सिफारिश करते हैं? –