পাই এবং পাইক বা পাইও না কেন?


8

আমি যখন পাইথন দেব প্যাকেজ ইনস্টল করি তখন বলুন python-numpy ফাইলগুলি সরল পাইথন ফাইল are আমি প্যাকেজ ম্যানেজারকে কীভাবে বলব - যে আমি আসলে পাইক ফাইল বা তার থেকেও আরও ভাল - পিও ফাইল ব্যবহার করব?

উত্তর:


12

আপনার কাছে এটি ইতিমধ্যে রয়েছে এবং আপনি ইতিমধ্যে সেগুলি ব্যবহার করছেন

ভাল-প্যাকেজযুক্ত পাইথন অ্যাপ্লিকেশনগুলি .pycফাইলগুলি ইনস্টল হওয়ার পরে স্ক্রিপ্টে চালিত ফাইলগুলিতে সংকলন করা হচ্ছে । আপনি যে মুহূর্তে ব্যবহার করছেন পাইথন ইনস্টলেশনটি গ্রহণ করতে সক্ষম হতে প্যাকেজিং নির্দেশিকা অনুসারে এটির প্রয়োজন। মনে রাখবেন যে .pycফাইলগুলি আপনার সিস্টেমে খুব নির্দিষ্ট (পাইথন সংস্করণ এবং নির্ভরতা)।

সমস্ত .pyoএবং .pycফাইলগুলি বিশেষত প্যাকেজগুলিতে বাদ দেওয়া হয়েছে এবং লিনটিয়ান দ্বারা ত্রুটি হিসাবে ট্যাগ করা হয়েছে :

সংকলিত পাইথন উত্স ফাইলগুলি অবশ্যই প্যাকেজে অন্তর্ভুক্ত করা উচিত নয়। এই ফাইলগুলি প্যাকেজ থেকে সরানো উচিত এবং পোস্ট-ইনস্টে প্যাকেজ ইনস্টলেশন সময়ে তৈরি করা উচিত।

পড়ুন ডেবিয়ান পাইথন নীতি অধ্যায় 2.6 ( মডিউল বাইট-সংকলন বিস্তারিত জানার জন্য)।

তীব্রতা: গুরুতর, নিশ্চিত: নির্দিষ্ট

python-numpyএই পোস্ট-ইনস্টল এর ক্ষেত্রে বাইট-সংকলন পাইেন্ট্রালের ডিহেল্পার হুক দ্বারা পরিচালিত হয়। ইনস্টলেশন পরে এটি দেখতে এটির মতো দেখাচ্ছে:

ls -l /usr/lib/python2.7/dist-packages/numpy
lrwxrwxrwx  1 root root     47 Mar 20  2012 add_newdocs.py -> ../../../../share/pyshared/numpy/add_newdocs.py
-rw-r--r--  1 root root 251912 Aug  6 22:06 add_newdocs.pyc

আরও কিছু পটভূমি তথ্য

কেন এই কারণগুলি .pyc/.pyo ফাইল প্রথম আবেদন সূচনার সময় রানটাইম এ কম্পাইল করা হয় না যেমন আপনার প্রত্যাশিত নিম্নোক্ত।

পাইথন ফাইলগুলি সিস্টেম-বিস্তৃত ডিরেক্টরিতে ইনস্টল করা থাকে, যা সিস্টেমে সমস্ত ব্যবহারকারীর জন্য উপলব্ধ। যখনই কোনও ব্যবহারকারী অ্যাপ্লিকেশন শুরু করবেন, পাইথন ইন্টারপ্রেটার .pyফাইলগুলি পড়তে পারেন , তবে এটি ডিরেক্টরিতে (যেমন /usr/lib/python2.7/dist-packages/) লিখতে পারেন না । এটি সমস্ত লিনাক্স সিস্টেমে সাধারণ সুরক্ষার অংশ; ব্যবহারকারীদের লিখতে হবে না/usr , শুধুমাত্র মূল অধিকার দিয়ে এটি সম্ভব হওয়া উচিত। এই কারণে, এপিটি হুকগুলি ইনস্টলেশনের সময় পাইথন ফাইলগুলি আপনার জন্য সংকলন করবে; প্রথমে প্যাকেজের আকার হ্রাস করতে, দ্বিতীয়ত পাইথন সম্পর্কিত আপনার সিস্টেমে একবার কিছু পরিবর্তন হলে হুকগুলি পুনরায় চালিত করতে সক্ষম হবেন, উদাহরণস্বরূপ যখন আপগ্রেডের সময় তারা বেমানান হন তখন পুনরায় সংযোগ করা প্রয়োজন।

এটি অবশ্য রানটাইমে নিয়মিত ব্যবহারকারীর মালিকানাধীন পাইথন ফাইলগুলিকে সংক্রামিত করবে না।


সুতরাং আমার /usr/share/pyshared/নিজের কাছে লিখিতযোগ্য হওয়া উচিত - যাতে অজগরটি প্রথমবারের জন্য ফাইলগুলি সংকলন করতে সক্ষম হয়।
অ্যাডোব

4
@ অ্যাডোব কী? না! এই সিস্টেম ডিরেক্টরিগুলি কখনই ব্যবহারকারীর জন্য লেখার যোগ্য না করে। আপনার প্যাকেজ পরিচালনা ইতিমধ্যে আপনার জন্য সেগুলি সংকলন করেছে (আমি আমার উত্তরে যা বলতে চাইছিলাম সে অনুযায়ী)। এটি সম্পর্কে আরও পরিষ্কার হতে আপডেট হয়েছে।
gertvdijk

আপনি এখন - যে আমি স্রেফ তাকিয়েছি /usr/lib/python2.7/dist-packages/numpy- সেখানে pycফাইল আছে। আমার মনে আছে আমি সেখানে পৃথক স্থাপনাগুলি দেখেছি - এবং সেখানে কেবল সরল পাই ফাইল ছিল। সুতরাং আমি "বাগটি পুনরুত্পাদন করতে পারি না" বাছাই করি।
অ্যাডোব

.pycএখনও সেখানে না থাকার একমাত্র কারণ প্যাকেজটি সম্পূর্ণরূপে ইনস্টল করা হয়নি। আনপ্যাক করার পরে আরও অন্যান্য পদক্ষেপ নিতে হবে। আইআইআরসি পাইথন-সেন্ট্রাল হুক সমস্ত প্যাকেজ ইনস্টল করার পরেই চালিত হয়। সুতরাং, প্যাকেজ ইনস্টল করার জন্য একটি চলমান বা বাধিত এপিটি সেশনে আপনার বর্ণিত পর্যবেক্ষণ সম্ভবত করা যেতে পারে।
জার্মটভিডিজক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.