मैंने एक स्क्रिप्ट लिखी है, जो विभिन्न ऑपरेटिंग सिस्टमों पर चलने वाली है: मेरे दोस्तों के कंप्यूटर और विश्वविद्यालय का सर्वर। विश्वविद्यालय का सर्वर लिनक्स है, इसलिए कुछ मॉड्यूल हैं जिन्हें मैं स्थापित नहीं कर सकता क्योंकि मेरे पास कोई सुडो अधिकार नहीं है। (साइड नोट: मेरी मुख्य स्क्रिप्ट के कुछ हिस्से जो उन मॉड्यूल को कहते हैं (केवल पोस्ट प्रोसेसिंग पार्ट्स और कंप्यूटेशंस चलाने वाले नहीं) लिनक्स के लिए टिप्पणी की जाती हैं)। इसके लिए काम करने के लिए, मैंने "functions.py" नामक एक पायथन फ़ाइल बनाई है जिसमें मैंने अपने सभी कार्यों को परिभाषित किया है और मुख्य फ़ाइल में आयात किए जाने वाले मॉड्यूल के सशर्त आयात का भी उपयोग किया है, जैसा कि नीचे दिखाया गया है:

def import_function_(Use_multiprocessing):

    import platform, cmath, math, os, shutil, subprocess as s

    if Use_multiprocessing:
        if platform.system()=='Linux':
            from multiprocessing import Process
            print("Your machine has "+platform.system()+" as an operating system, you can use threading by activating the variable Use_multiprocessing ")
        elif platform.system()!='Linux':
            import matlab.engine, numpy as n, ltspice
            from colorama import Fore, init
            init(autoreset=True)
            print(Fore.RED+"Your machine has "+platform.system()+" as an operating system, no threading can be used, sorry...")
    if __name__ != 'main':
        import functions as fct

हालांकि, जब मैं मुख्य फ़ाइल चलाता हूं, तो मुझे त्रुटियां मिलती हैं जैसे "ओएस परिभाषित नहीं है, numpy परिभाषित नहीं है ..." और सभी पहले आयातित मॉड्यूल भले ही मैं उपरोक्त फ़ंक्शन आयात कर रहा हूं ...

मैं क्या गलत कर रहा हूं?

1
Wallflower 9 पद 2020, 13:00

1 उत्तर

सबसे बढ़िया उत्तर

पुस्तकालयों को परिभाषित नहीं किया गया है क्योंकि वे केवल फ़ंक्शन के अंदर उल्लिखित हैं, मॉड्यूल स्तर पर नहीं। मैं निम्नलिखित का सुझाव दूंगा:

Import_modules.py

import platform
import cmath
import math
import os
import shutil
import subprocess as s

if platform.system() == 'Linux':
    from multiprocessing import Process

    print(
        "Your machine has " + platform.system() + " as an operating system, you can use threading by activating the variable Use_multiprocessing ")
elif platform.system() != 'Linux':
    import numpy as n
    from colorama import Fore, init

    init(autoreset=True)
    print(
        Fore.RED + "Your machine has " + platform.system() + " as an operating system, no threading can be used, sorry...")

Main.py

from import_modules import *

यदि वास्तव में मल्टीप्रोसेसिंग भाग को अलग करने की आवश्यकता है तो इसे किसी अन्य फ़ाइल (import_modules_mp.py) में डालें और "Use_multiprocessing" सही होने पर इसे आयात करें।

पीएस: फिर भी, मॉड्यूल में पुस्तकालयों को आयात करने के लिए बेहतर अभ्यास माना जाएगा जहां आपको विशिष्ट पुस्तकालय की आवश्यकता है। प्रदर्शन के बारे में चिंता न करें। आयातित पुस्तकालयों को कैश किया जाएगा। इसलिए, आयात प्रक्रिया कई बार निष्पादित नहीं होगी।

2
Felix Kleine Bösing 9 पद 2020, 13:16