ড্যাশ সহ পাইথন মডিউল বা তার নামে হাইফেন (-)


92

আমার কাছে একটি অজগর মডিউল রয়েছে যার নামে ড্যাশ রয়েছে, foo-bar.py

মডিউলটির নাম পরিবর্তন করা এমন একটি বিষয় যা আমি মডিউলটি ভাগ করে নেওয়া এড়াতে পছন্দ করি এবং এটি ব্যবহৃত সমস্ত জায়গাগুলি আমাকে অনুসরণ করতে হবে যাতে আমার বিশেষ কেসটি কাজ করবে।

এমন কোনও মডিউল লোড করার কোনও উপায় আছে যার নামটিতে সাধারণত নিষিদ্ধ '-' রয়েছে?

(আমি বুঝতে পারি যে এটি সর্বোত্তম অনুশীলন নয় But তবে এই পরিস্থিতির জন্য আমি অনেক বড় অ্যাপ্লিকেশনগুলির নতুন নকশা এবং পরীক্ষা করা পছন্দ করবো না Also এছাড়াও আমি মনে করি না যে আমার কর্পোরেট মাস্টারগুলি বাস্তবায়নের জন্য আমার সময় গ্রহণের অনুমোদন করবে) যেমন একটি পরিবর্তন।)


4
আপনি কেবল নিজের আইডিই-তে একটি ফাইল-ইন-ফাইল করতে পারবেন না এবং সমস্তগুলি প্রতিস্থাপন foo-barকরতে পারবেন foobarবা যা কিছু? কত কঠিন?
agf


4
বিশেষ এই উত্তরটি: stackoverflow.com/questions/761519/...
BenH

সংক্ষিপ্ত উত্তর: এটি আমার সমস্ত কোড নয়।
হাফম্যান

অন্যান্য ব্যবহারকারীরা বাণিজ্যিক অ্যাপ্লিকেশন S. আমি জানি কীভাবে এটি সম্ভব।
হাফম্যান

উত্তর:


98

আপনি এটি ব্যবহার করে করতে পারেন __import__()। উদাহরণ স্বরূপ:

foobar = __import__("foo-bar")

তবে পরিবর্তে আপনার পরিবর্তে মডিউলটির নতুন নামকরণ করা উচিত। এইভাবে আপনি বিভ্রান্তি এড়াতে পারবেন যেখানে মডিউলটির ফাইলের নাম প্রোগ্রামে ব্যবহৃত সনাক্তকারীর চেয়ে আলাদা।


4
ধন্যবাদ আমি বুঝতে পারি যে সম্মেলনগুলি ব্যবহারিক যেখানেই করা উচিত। বিভাগীয় কোড পর্যালোচনা চলাকালীন আমি এই নির্দিষ্ট সমস্যাটি নিয়ে আসব।
হাফম্যান

58

আমি জানি এই প্রশ্নটির ইতিমধ্যে প্রশ্নকারীর সন্তুষ্টির জবাব দেওয়া হয়েছে, তবে এখানে আরও একটি উত্তর দেওয়া হয়েছে যা আমি বিশ্বাস করি যে উপরে কিছু যোগ্যতা ব্যবহার করা আছে __import__()

import importlib
mod = importlib.import_module("path.to.my-module")
# mod.yourmethod()

ডক্স অনুসারে:

"This provides an implementation of import which is portable to any 
Python interpreter. This also provides an implementation which is 
easier to comprehend than one implemented in a programming language 
other than Python."

Python 2.7 শুধুমাত্র


4
আমি এটি কীভাবে করব তা সন্ধান করছিলাম এবং আপনার উত্তরটি আমার অবস্থার সাথে পুরানো উত্তরের চেয়ে ভাল প্রযোজ্য। এটির নতুন উত্তর হিসাবে যুক্ত করার জন্য আপনি ইতিমধ্যে বিদ্যমান জবাবের একটি স্বতন্ত্র উত্তর দেখতে যদি সর্বদা ভাল হয় তবে আমার মতো অবস্থানে থাকা লোকেরা এক সাথে সমস্ত প্রাসঙ্গিক তথ্য খুঁজে পেতে পারে।
ডেভি এম এম

1

হাইফেনের পরিবর্তে আন্ডারস্কোর ব্যবহার করার চেষ্টা করুন।

pymysql_utils আমদানি করুন

আমদানি করা পিমিস্কল-ইউপসগুলি পিপ দ্বারা ব্যবহৃত মডিউলের নাম হলেও আমার জন্য কাজ করেছিল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.