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

สำหรับคำถามเกี่ยวกับการนำเข้าโมดูลใน Python

25
การนำเข้าไฟล์จากโฟลเดอร์อื่น
ฉันมีโครงสร้างโฟลเดอร์ต่อไปนี้ application/app/folder/file.py และฉันต้องการนำเข้าฟังก์ชั่นบางอย่างจากfile.pyในไฟล์ Python อื่นที่อยู่ในนั้น application/app2/some_folder/some_file.py ฉันได้พยายาม from application.app.folder.file import func_name และความพยายามอื่น ๆ ที่หลากหลาย แต่จนถึงขณะนี้ฉันไม่สามารถนำเข้าได้อย่างถูกต้อง ฉันจะทำสิ่งนี้ได้อย่างไร

29
วิธีการนำเข้าโมดูลที่กำหนดเส้นทางแบบเต็ม?
ฉันจะโหลดโมดูล Python ที่ระบุเส้นทางแบบเต็มได้อย่างไร โปรดทราบว่าไฟล์สามารถอยู่ที่ใดก็ได้ในระบบไฟล์เนื่องจากเป็นตัวเลือกการกำหนดค่า

19
วิธีการนำเข้าไฟล์ Python อื่น ๆ
ฉันจะนำเข้าไฟล์อื่นใน Python ได้อย่างไร ฉันจะนำเข้าไฟล์ไพ ธ อนได้import file.pyอย่างไร? ฉันจะนำเข้าโฟลเดอร์แทนไฟล์เฉพาะได้อย่างไร ฉันต้องการโหลดไฟล์ Python แบบไดนามิกที่รันไทม์โดยยึดตามการป้อนข้อมูลของผู้ใช้ ฉันต้องการทราบวิธีการโหลดเพียงส่วนเดียวจากไฟล์ ตัวอย่างเช่นในmain.pyฉันมี: from extra import * แม้ว่าสิ่งนี้จะให้คำจำกัดความทั้งหมดแก่ฉันในextra.pyเมื่อบางทีสิ่งที่ฉันต้องการคือนิยามเดียว def gap(): print print ฉันจะทำอะไรเพิ่มimportคำสั่งที่เพิ่งได้รับgapจากextra.py?

19
ฉันจะยกเลิกการโหลด (โหลด) โมดูลได้อย่างไร
ฉันมีเซิร์ฟเวอร์ Python ที่ใช้งานมานานและต้องการที่จะสามารถอัพเกรดบริการได้โดยไม่ต้องรีสตาร์ทเซิร์ฟเวอร์ วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? if foo.py has changed: unimport foo <-- How do I do this? import foo myfoo = foo.Foo()

22
นำเข้าโมดูลจากเส้นทางสัมพัทธ์
ฉันจะนำเข้าโมดูล Python ที่กำหนดเส้นทางสัมพัทธ์ได้อย่างไร ตัวอย่างเช่นหากdirFooมีFoo.pyและdirBarและdirBarมีBar.pyฉันจะนำBar.pyเข้าได้Foo.pyอย่างไร นี่คือการแสดงภาพ: dirFoo\ Foo.py dirBar\ Bar.py Fooต้องการรวมBarแต่การปรับโครงสร้างลำดับชั้นของโฟลเดอร์ไม่ใช่ตัวเลือก

17
วิธีแก้ไข“ พยายามนำเข้าที่เกี่ยวข้องในแพ็คเกจที่ไม่ใช่” แม้จะมี __init__.py
ฉันพยายามติดตามPEP 328ด้วยโครงสร้างไดเรกทอรีต่อไปนี้: pkg/ __init__.py components/ core.py __init__.py tests/ core_test.py __init__.py ในcore_test.pyฉันมีคำสั่งการนำเข้าต่อไปนี้ from ..components.core import GameLoopEvents อย่างไรก็ตามเมื่อฉันเรียกใช้ฉันได้รับข้อผิดพลาดต่อไปนี้: tests$ python core_test.py Traceback (most recent call last): File "core_test.py", line 3, in <module> from ..components.core import GameLoopEvents ValueError: Attempted relative import in non-package การค้นหารอบ ๆ ฉันพบ " เส้นทางสัมพัทธ์ไม่ทำงานแม้จะมี __init__.py " และ " นำเข้าโมดูลจากเส้นทางสัมพัทธ์ …

10
การนำเข้าสัมพัทธ์ใน Python 3
ฉันต้องการนำเข้าฟังก์ชั่นจากไฟล์อื่นในไดเรกทอรีเดียวกัน บางครั้งมันก็ใช้ได้สำหรับฉันด้วยfrom .mymodule import myfunctionแต่บางครั้งฉันก็: SystemError: Parent module '' not loaded, cannot perform relative import บางครั้งก็ใช้งานได้from mymodule import myfunctionแต่บางครั้งฉันก็มี: SystemError: Parent module '' not loaded, cannot perform relative import ฉันไม่เข้าใจตรรกะที่นี่และฉันไม่สามารถหาคำอธิบายใด ๆ มันดูสุ่มอย่างสมบูรณ์ มีคนอธิบายให้ฉันฟังหน่อยว่าตรรกะอะไรที่อยู่เบื้องหลังทั้งหมดนี้

13
วิธีการนำเข้าคลาสภายในไดเรกทอรีเดียวกันหรือไดเรกทอรีย่อยได้อย่างไร
ฉันมีไดเรกทอรีที่เก็บไฟล์. pyทั้งหมด bin/ main.py user.py # where class User resides dir.py # where class Dir resides ฉันต้องการที่จะใช้เรียนจากuser.pyและdir.pyในmain.py ฉันจะนำเข้าคลาส Python เหล่านี้ไปยังmain.py ได้อย่างไร นอกจากนี้ฉันจะนำเข้าคลาสได้Userอย่างไรหากuser.pyอยู่ในไดเรกทอรีย่อย bin/ dir.py main.py usr/ user.py

18
การนำเข้าโมดูลจากโฟลเดอร์หลัก
ฉันกำลังใช้ Python 2.5 นี่คือแผนผังโฟลเดอร์ของฉัน: ptdraft/ nib.py simulations/ life/ life.py (ฉันยังมี__init__.pyในแต่ละโฟลเดอร์โดยไม่ต้องอ่านค่าที่นี่) ฉันจะนำเข้าnibโมดูลจากภายในlifeโมดูลได้อย่างไร ฉันหวังว่ามันเป็นไปได้ที่จะทำโดยไม่ต้องซ่อมแซมด้วย sys.path หมายเหตุ: โมดูลหลักที่กำลังทำงานอยู่ในptdraftโฟลเดอร์

30
ImportError: ไม่มีโมดูลชื่อคำขอ
เมื่อใดก็ตามที่ฉันพยายามที่จะนำเข้าที่ฉันได้รับข้อผิดพลาดว่าrequestsNo module Named requests import requests ข้อผิดพลาดที่ฉันได้รับ: File "ex2.py", line 1, in <module> import requests ImportError: No module named requests

11
วิธีการนำเข้าโมดูลที่ตั้งชื่อเป็นสตริง?
ฉันกำลังเขียนแอปพลิเคชัน Python ที่ใช้เป็นคำสั่งเป็นอาร์กิวเมนต์ตัวอย่างเช่น: $ python myapp.py command1 ฉันต้องการให้แอปพลิเคชันสามารถขยายได้นั่นคือเพื่อให้สามารถเพิ่มโมดูลใหม่ที่ใช้คำสั่งใหม่โดยไม่ต้องเปลี่ยนแหล่งแอพพลิเคชันหลัก ต้นไม้ดูเหมือนว่า: myapp/ __init__.py commands/ __init__.py command1.py command2.py foo.py bar.py ดังนั้นฉันต้องการให้แอปพลิเคชันค้นหาโมดูลคำสั่งที่มีอยู่ตอนรันไทม์และดำเนินการโมดูลที่เหมาะสม Python กำหนดฟังก์ชั่น__import__ซึ่งรับสตริงสำหรับชื่อโมดูล: __import __ (ชื่อ, globals = None, locals = None, fromlist = (), level = 0) ฟังก์ชันนำเข้าชื่อโมดูลซึ่งอาจใช้ globals และ locals ที่กำหนดเพื่อกำหนดวิธีตีความชื่อในบริบทแพ็คเกจ รายการจากให้ชื่อของวัตถุหรือ submodules ที่ควรจะนำเข้าจากโมดูลที่กำหนดโดยชื่อ ที่มา: https://docs.python.org/3/library/functions.html# นำเข้า ดังนั้นในปัจจุบันฉันมีสิ่งที่ชอบ: command = sys.argv[1] …

15
ImportError: ไม่สามารถนำเข้าชื่อ X
ฉันมีไฟล์ต่างกันสี่ชื่อ: main, vector, entity และ physics ฉันจะไม่โพสต์รหัสทั้งหมดเพียงแค่นำเข้าเพราะฉันคิดว่านั่นคือที่ที่ข้อผิดพลาดอยู่ (ถ้าคุณต้องการฉันสามารถโพสต์เพิ่มเติม) หลัก: import time from entity import Ent from vector import Vect #the rest just creates an entity and prints the result of movement Entity: from vector import Vect from physics import Physics class Ent: #holds vector information and id def tick(self, dt): …

15
จะนำเข้าสัมพัทธ์ใน Python ได้อย่างไร
ลองนึกภาพโครงสร้างไดเรกทอรีนี้: app/ __init__.py sub1/ __init__.py mod1.py sub2/ __init__.py mod2.py ฉันเข้ารหัสและผมจำเป็นต้องนำเข้าจากบางสิ่งบางอย่างmod1 mod2ฉันควรทำอย่างไร ฉันพยายามfrom ..sub2 import mod2แต่ฉันได้รับ "พยายามนำเข้าที่เกี่ยวข้องในแพคเกจที่ไม่ใช่" ฉัน googled ไปรอบ ๆ แต่พบsys.path"แฮ็ค" การแฮ็ก ไม่มีวิธีที่สะอาดใช่มั้ย แก้ไข: ทั้งหมดของฉัน__init__.pyว่างเปล่าในขณะนี้ Edit2: ฉันพยายามที่จะทำเช่นนี้เพราะ sub2 มีชั้นเรียนที่จะใช้ร่วมกันในแพคเกจย่อย ( sub1, subXฯลฯ ) แก้ไข 3: พฤติกรรมที่ฉันกำลังมองหาเหมือนกับที่อธิบายไว้ในPEP 366 (ขอบคุณ John B)

11
นำเข้าไฟล์จากไดเรกทอรีย่อยหรือไม่
ฉันมีไฟล์ที่เรียกว่าตั้งอยู่บนtester.py/project /projectมีไดเรกทอรีย่อยที่เรียกว่าlibโดยมีไฟล์ชื่อBoxTime.py: /project/tester.py /project/lib/BoxTime.py ฉันต้องการที่จะนำเข้าจากBoxTime testerฉันได้ลองสิ่งนี้แล้ว: import lib.BoxTime ซึ่งส่งผลให้: Traceback (most recent call last): File "./tester.py", line 3, in <module> import lib.BoxTime ImportError: No module named lib.BoxTime แนวคิดใดที่นำเข้าBoxTimeจากไดเรกทอรีย่อย? แก้ไข __init__.pyเป็นปัญหา แต่ไม่ลืมที่จะอ้างถึงBoxTimeในฐานะlib.BoxTimeหรือการใช้งาน: import lib.BoxTime as BT ... BT.bt_function()

28
Python error“ ImportError: ไม่มีโมดูลชื่อ”
Python ถูกติดตั้งในโลคอลไดเร็กทอรี แผนผังไดเรกทอรีของฉันมีลักษณะเช่นนี้: (local directory)/site-packages/toolkit/interface.py รหัสของฉันอยู่ที่นี่: (local directory)/site-packages/toolkit/examples/mountain.py ในการรันตัวอย่างฉันเขียนpython mountain.pyและในรหัสฉันมี: from toolkit.interface import interface และฉันได้รับข้อผิดพลาด: Traceback (most recent call last): File "mountain.py", line 28, in ? from toolkit.interface import interface ImportError: No module named toolkit.interface ผมได้ตรวจสอบแล้วและมีฉันมีไดเรกทอรีsys.path /site-packagesนอกจากนี้ฉันมีไฟล์__init__.py.binในโฟลเดอร์ชุดเครื่องมือเพื่อระบุให้ Python ทราบว่านี่เป็นแพ็คเกจ ฉันยังมี__init__.py.binในไดเรกทอรีตัวอย่าง ฉันไม่รู้ว่าทำไม Python หาไฟล์ไม่เจอเมื่อมันเข้าsys.pathมา ความคิดใด ๆ มันอาจเป็นปัญหาสิทธิ์หรือไม่ ฉันต้องการสิทธิ์ดำเนินการบางอย่างหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.