คำถามติดแท็ก relative-import

12
การนำเข้าสัมพัทธ์ - ModuleNotFoundError: ไม่มีโมดูลชื่อ x
นี่เป็นครั้งแรกที่ฉันได้นั่งลงและลองใช้ python 3 และดูเหมือนจะล้มเหลวอย่างน่าสังเวช ฉันมีสองไฟล์ต่อไปนี้: test.py config.py config.py มีฟังก์ชั่นบางอย่างที่กำหนดไว้ในนั้นรวมถึงตัวแปรบางอย่าง ฉันได้แยกมันออกเป็น: config.py debug = True test.py import config print (config.debug) ฉันยังมี __init__.py อย่างไรก็ตามฉันได้รับข้อผิดพลาดต่อไปนี้: ModuleNotFoundError: No module named 'config' ฉันทราบว่าอนุสัญญา py3 นั้นใช้การนำเข้าแบบสัมบูรณ์: from . import config อย่างไรก็ตามสิ่งนี้นำไปสู่ข้อผิดพลาดต่อไปนี้: ImportError: cannot import name 'config' ดังนั้นฉันจะสูญเสียว่าจะทำอย่างไรที่นี่ ... ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก :)

7
นำเข้าฟังก์ชันโลคัลจากโมดูลที่อยู่ในไดเร็กทอรีอื่นที่มีการนำเข้าแบบสัมพัทธ์ใน Jupyter Notebook โดยใช้ Python 3
ฉันมีโครงสร้างไดเรกทอรีคล้ายกับสิ่งต่อไปนี้ meta_project project1 __init__.py lib module.py __init__.py notebook_folder notebook.jpynb เมื่อทำงานในnotebook.jpynbถ้าฉันพยายามใช้การนำเข้าสัมพัทธ์เพื่อเข้าถึงฟังก์ชันfunction()ในmodule.py: from ..project1.lib.module import function ฉันได้รับข้อผิดพลาดต่อไปนี้: SystemError Traceback (most recent call last) <ipython-input-7-6393744d93ab> in <module>() ----> 1 from ..project1.lib.module import function SystemError: Parent module '' not loaded, cannot perform relative import มีวิธีใดบ้างที่จะทำให้สิ่งนี้ทำงานโดยใช้การนำเข้าแบบสัมพัทธ์ หมายเหตุเซิร์ฟเวอร์โน้ตบุ๊กถูกสร้างอินสแตนซ์ที่ระดับของmeta_projectไดเร็กทอรีดังนั้นจึงควรเข้าถึงข้อมูลในไฟล์เหล่านั้น โปรดทราบว่าอย่างน้อยที่สุดตามที่ตั้งใจไว้เดิมproject1ไม่ได้คิดว่าเป็นโมดูลดังนั้นจึงไม่มี__init__.pyไฟล์จึงมีความหมายเพียงแค่เป็นไดเร็กทอรีระบบไฟล์ หากวิธีการแก้ปัญหาต้องการให้ถือว่าเป็นโมดูลและรวม__init__.pyไฟล์ (แม้แต่ไฟล์เปล่า ๆ ) ก็ใช้ได้ แต่การทำเช่นนั้นไม่เพียงพอที่จะแก้ปัญหา ฉันแชร์ไดเร็กทอรีนี้ระหว่างเครื่องและการนำเข้าแบบสัมพัทธ์ทำให้ฉันสามารถใช้รหัสเดียวกันได้ทุกที่และฉันมักจะใช้โน้ตบุ๊กในการสร้างต้นแบบอย่างรวดเร็วดังนั้นคำแนะนำที่เกี่ยวข้องกับการแฮ็คด้วยกันพา …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.