সম্ভবত এটি করার সর্বোত্তম উপায় হ'ল setuptools
package_data
নির্দেশকে ব্যবহার করা । এর পরিবর্তে setuptools
(বা distribute
) ব্যবহার করার অর্থ এই নয় distutils
, তবে এটি একটি অত্যন্ত বিজোড় "আপগ্রেড" "
এখানে একটি পূর্ণ (তবে অপরিবর্তিত) উদাহরণ রয়েছে:
from setuptools import setup, find_packages
setup(
name='your_project_name',
version='0.1',
description='A description.',
packages=find_packages(exclude=['ez_setup', 'tests', 'tests.*']),
package_data={'': ['license.txt']},
include_package_data=True,
install_requires=[],
)
এখানে উল্লেখযোগ্য যে নির্দিষ্ট লাইনগুলি নোট করুন:
package_data={'': ['license.txt']},
include_package_data=True,
package_data
dict
নিদর্শনগুলির তালিকার একটি প্যাকেজ নাম (খালি = সমস্ত প্যাকেজ) হ'ল (গ্লোবগুলি অন্তর্ভুক্ত করতে পারে)। উদাহরণস্বরূপ, আপনি যদি আপনার প্যাকেজের মধ্যে কেবল ফাইলগুলি নির্দিষ্ট করতে চান তবে আপনি এটিও করতে পারেন:
package_data={'yourpackage': ['*.txt', 'path/to/resources/*.txt']}
সমাধান অবশ্যই এখানে নাpy
কোনও .py
এক্সটেনশন দিয়ে আপনার অ- ফাইলের নাম পরিবর্তন করে ।
দেখা ইয়ান Bicking এর উপস্থাপনা আরও তথ্যের জন্য।
আপডেট: আরেকটি [আরও ভাল] পদ্ধতির
যদি আপনি কেবল উত্স বিতরণ ( sdist
) এর সামগ্রীগুলি নিয়ন্ত্রণ করতে চান এবং প্যাকেজের বাইরে ফাইল থাকতে পারে (যেমন শীর্ষ স্তরের ডিরেক্টরি) কোনও MANIFEST.in
ফাইল যুক্ত করা হয় তবে অন্য একটি পদ্ধতিটি ভালভাবে কাজ করে । দেখুন পাইথন ডকুমেন্টেশনএই ফাইলের ফর্ম্যাটের জন্য ।
এই প্রতিক্রিয়াটি লেখার পরে, আমি খুঁজে পেয়েছি যে MANIFEST.in
সাধারণত আপনার উত্স বিতরণ ( tar.gz
) আপনার প্রয়োজনীয় ফাইল রয়েছে তা নিশ্চিত করার জন্য ব্যবহার করা সাধারণত হতাশাগ্রস্ত একটি পদ্ধতি ।
উদাহরণস্বরূপ, আপনি যদি requirements.txt
শীর্ষ-স্তর থেকে অন্তর্ভুক্ত করতে চান, তবে পুনরাবৃত্তভাবে শীর্ষ-স্তরের "ডেটা" ডিরেক্টরি অন্তর্ভুক্ত করুন:
include requirements.txt
recursive-include data *
তবুও, এই ফাইলগুলি ইনস্টল করার সময় সাইট-প্যাকেজগুলির অভ্যন্তরে প্যাকেজের ফোল্ডারে অনুলিপি করার জন্য, আপনাকে ফাংশন সরবরাহ include_package_data=True
করতে setup()
হবে। দেখুন অ কোড ফাইলগুলি যোগ করার পদ্ধতি আরও তথ্যের জন্য।