انجمن پایتون فارسی

    • نام‌نویسی
    • درون آمدن
    • جستجو
    • دسته‌بندی‌ها
    • تازه‌ها
    • برچسب‌ها
    • دوست‌داشتنی‌ها
    • کاربران
    • گروه‌ها

    مشکل در کاربرد نقطه در ایمپورت کردن

    پرسش و پاسخ
    2
    6
    88
    بارگذاری پست‌های بیش‌تر
    • قدیمی‌ترین به جدید‌ترین
    • جدید‌ترین به قدیمی‌ترین
    • بیشترین رای ها
    پاسخ
    • پاسخ به موضوع
    وارد شوید تا پست بفرستید
    این موضوع پاک شده است. تنها کاربرانِ با حق مدیریت موضوع می‌توانند آن را ببینند.
    • A
      amirhosein آخرین ویرایش توسط انجام شده

      سلام.
      من دارم کاربرد نقطه در import کردن را یاد می‌گیرم ولی وقتی می‌خواهم مثال‌ها را خودم انجام بدم، نمی‌توانم.
      مثلاً من یک پوشه به نام package2 دارم که این دو تا فایل را دارد:

      package2
      ├── __init__.py (empty)
      └── mathi.py
      

      در فایل mathi.py هم این نوشته شده:

      print('math runs')
      
      def f():
          print('func runs')
      

      وقتی در پوشه‌ی package2 کنسول را باز می‌کنم. نمی‌توانم mathi.py را ایمپورت کنم:

      >>> from .mathi import f
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      ImportError: attempted relative import with no known parent package
      >>> from . import mathi
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      ImportError: attempted relative import with no known parent package
      

      خلاصه هر کاری می‌کنم همین ارور را می‌دهد.

      کسی می‌داند کجای کارم مشکل دارد؟

      1 پاسخ آخرین پاسخ پاسخ نقل قول 0
      • س
        سعید فضل اله زاده آخرین ویرایش توسط انجام شده

        سلام
        نیازی به نقطه در اول اسم ماژول نیست چون که شما دارید در همون مسیر ایمپورت می کنید.
        ایمپورت رو بدون نقطه و به این شکل انجام بدید:

        from mathi import f
        print(f())
        

        Pyth on Python :)

        1 پاسخ آخرین پاسخ پاسخ نقل قول 0
        • A
          amirhosein آخرین ویرایش توسط انجام شده

          خب هدف اصلی من این است که بفهمم آن نقطه دارد چه کار می‌کند. اگر می‌شود یک مثالی بزنید که آن نقطه را داشته باشد.

          1 پاسخ آخرین پاسخ پاسخ نقل قول 0
          • س
            سعید فضل اله زاده آخرین ویرایش توسط انجام شده

            ساختار پروژه تون رو اجازه بدید کمی گسترش بدم:

            package2
            ├── __init__.py (empty)
            └── mathi.py
            └──  dir1
                    └──  dir1-1
                            └──  module1-1.py
                    └──  module1.py
                    └──  module2.py
            └──  dir2
                    └──  module1.py
                    └──  module2.py
            

            از اون جایی که دایرکتوری اصلی پروژه شما package2 هست پس اگر بخوایم یک ماژولی که در خود این دایرکتوری هست (ساب دایرکتوری مثل dir1 و dir2 منظورم نیست) رو اجرا کنیم به این شکل میشه:

            from mathi import f
            

            اگر بخوایم یک ماژول از dir1 ایمپورت کنیم:

            from dir1.module1 import *
            

            و یک ماژول از dir1-1 ایمپورت کنیم:

            from dir1.dir1-1.module1-1 import *
            

            Pyth on Python :)

            1 پاسخ آخرین پاسخ پاسخ نقل قول 0
            • A
              amirhosein آخرین ویرایش توسط انجام شده

              متشکر از راهنماییتون.
              من در واقع می‌خواستم relative import را یاد بگیرم.
              راه حل ارور را در یک سایت پیدا کردم.

              از وقتی که گذاشتید متشکرم

              1 پاسخ آخرین پاسخ پاسخ نقل قول 0
              • س
                سعید فضل اله زاده آخرین ویرایش توسط انجام شده

                بسیار عالی، خواهش می‌کنم.
                تاپیک بسته شد.

                Pyth on Python :)

                1 پاسخ آخرین پاسخ پاسخ نقل قول 0
                • قفل شده توسط  س سعید فضل اله زاده 
                • 1 / 1
                • اولین پست
                  آخرین پست
                قدرت گرفته از NodeBB | میزبانی شده روی سرور مجازی در مازندهاست