Làm cách nào để nhập mô-đun có đường dẫn trong Python?

Mô-đun python là một loại tệp mã chứa một tập hợp các hàm, lớp và định nghĩa biến. Với mô-đun, bạn có thể làm cho mã có thể tái sử dụng và dễ hiểu. Để sử dụng mã mô-đun, bạn phải nhập nó

Dưới đây là một số phương pháp để nhập mô-đun bằng cách sử dụng đường dẫn đầy đủ của nó

  • hệ thống. con đường. chức năng nối thêm []
  • gói nhập khẩu
  • Lớp SourceFileLoader

Ví dụ nhập mô-đun từ một đường dẫn trong Python

Mã ví dụ đơn giản. coi đây là tệp dự án và cấu trúc mô-đun. -

chủ yếu. mã py cho tất cả các ví dụ

var = "Hello main file"
num = 9876543210


def greeting[name]:
    print["Hello, " + name]

sử dụng sys. con đường. chức năng nối thêm []

Biến đường dẫn chứa các thư mục mà trình thông dịch Python tìm kiếm để tìm các mô-đun đã nhập trong tệp nguồn

import sys

# appending a path
sys.path.append['modules']

from modules import main

print[main.num]

đầu ra. 9876543210

Sử dụng gói importlib

nhập khẩu. util là một trong những mô-đun có trong gói này có thể được sử dụng để nhập mô-đun từ đường dẫn đã cho

import importlib.util

spec = importlib.util.spec_from_file_location["main", "modules/main.py"]

foo = importlib.util.module_from_spec[spec]

spec.loader.exec_module[foo]

print[foo.var]

đầu ra. Xin chào tập tin chính

Sử dụng lớp SourceFileLoader

Lớp SourceFileLoader là một lớp cơ sở trừu tượng được sử dụng để triển khai tải tệp nguồn với sự trợ giúp của hàm load_module[] nhập mô-đun

from importlib.machinery import SourceFileLoader

# imports the module from the given path
foo = SourceFileLoader["main", "modules/main.py"].load_module[]

foo.greeting["Kevin"]

đầu ra. Xin chào Kevin

Hãy bình luận nếu bạn có bất kỳ nghi ngờ hoặc đề xuất nào về chủ đề mô-đun Python này

Ghi chú. IDE. PyCharm 2021. 3. 3 [Phiên bản cộng đồng]

cửa sổ 10

Trăn 3. 10. 1

Tất cả các Ví dụ về Python đều nằm trong Python 3, vì vậy có thể nó khác với python 2 hoặc các phiên bản nâng cấp

Rohit

Bằng cấp về Khoa học Máy tính và Kỹ sư. Nhà phát triển ứng dụng và có kinh nghiệm về nhiều ngôn ngữ lập trình. Đam mê công nghệ & thích học hỏi kỹ thuật

Cách Pythonic nhất để nhập mô-đun từ một thư mục khác là đặt một tệp trống có tên __init__.py vào thư mục đó và sử dụng đường dẫn tương đối với ký hiệu dấu chấm

Ví dụ: một mô-đun trong thư mục mẹ sẽ được nhập với from . import module. Tệp __init__.py báo hiệu cho Python rằng thư mục phải được coi là gói

Xây dựng vấn đề

Vấn đề. Làm cách nào để nhập tệp hoặc mô-đun từ một thư mục hoặc thư mục khác trong Python?

Ví dụ. Giả sử, bạn đã đưa ra cấu trúc thư mục sau

application
 ├── app
 │   └── folder
 │       └── file_1.py
 └── app2
     └── some_folder
         └── file_2.py

Mục tiêu của bạn là nhập các hàm từ file_1.py trong

# file_2.py
import sys
sys.path.append['/.../application/app/folder']

import file_1
0

Phương pháp 1. hệ thống. con đường. nối thêm []

Phương pháp đầu tiên nối thêm đường dẫn của ________ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ với biến _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ của hệ thống

# file_2.py
import sys
sys.path.append['/.../application/app/folder']

import file_1

Lưu ý rằng bạn cần thay thế ba dấu chấm đầu tiên trong

# file_2.py
import sys
sys.path.append['/.../application/app/folder']

import file_1
3 bằng đường dẫn cụ thể đến thư mục
# file_2.py
import sys
sys.path.append['/.../application/app/folder']

import file_1
4

Nhân tiện, vui lòng tham gia học viện email miễn phí của tôi và tải xuống bảng gian lận Python của bạn tại đây

Thật thú vị–và hàng nghìn Finxter đã nói với tôi rằng họ thích các cheat sheet

Được rồi, hãy chuyển sang một giải pháp sửa đổi một chút cho vấn đề này

Phương pháp 2. hệ thống. con đường. chèn[]

Một cách thay thế tương tự là chèn đường dẫn của file_1.py vào vị trí 1 của biến

# file_2.py
import sys
sys.path.append['/.../application/app/folder']

import file_1
2 của hệ thống

Điều này đảm bảo rằng nó được tải với mức độ ưu tiên cao hơn và tránh một số xung đột khi đặt tên

# file_2.py
import sys
sys.path.insert[1, '/.../application/app/folder']

import file

Một lần nữa, thay thế ba dấu chấm đầu tiên trong

# file_2.py
import sys
sys.path.append['/.../application/app/folder']

import file_1
3 bằng đường dẫn cụ thể đến thư mục
# file_2.py
import sys
sys.path.append['/.../application/app/folder']

import file_1
4

Phương pháp 3. Ký hiệu dấu chấm với __init__. py

Bạn cũng có thể thực hiện thủ thuật sau—tạo một gói mới

# file_2.py
from application.app.folder.file_1 import func_name

Tuy nhiên, đảm bảo bao gồm một tệp __init__.py trống trong thư mục

Tệp này báo cho Python coi thư mục là một gói. Tôi coi đây là cách Pythonic nhất để giải quyết vấn đề này

Phương pháp 4. nhập khẩu

Một giải pháp thay thế không quá Pythonic - phức tạp hơn và dựa trên các phụ thuộc bên ngoài - sẽ là sử dụng mô-đun

# file_2.py
import sys
sys.path.insert[1, '/.../application/app/folder']

import file
0

Đây là một ví dụ

import importlib.util as ilu

folder = '/.../application/app/folder'
file = 'file_2'

spec = ilu.spec_from_file_location[file, folder]
your_lib = ilu.module_from_spec[spec]
spec.loader.exec_module[your_lib]

your_lib.function[]

Video liên quan

Vui lòng xem video giải thích sau đây, trong đó Peter, Người sáng tạo Finxter, chỉ cho bạn cách gọi một hàm từ một tệp khác

Làm cách nào để gọi một hàm từ một tệp khác trong Python?


Xem video này trên YouTube

Người giới thiệu

  • https. // stackoverflow. com/câu hỏi/4383571/nhập-tệp-từ-thư mục khác nhau
  • https. // stackoverflow. com/questions/67631/how-to-import-a-module-given-the-full-path?rq=1
  • Cách nhập hàm Python từ thư mục khác

Đi đâu từ đây?

Đủ lý thuyết. Hãy thực hành một số

Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa

Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế

Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?

🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người mới hoàn toàn

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn

Tham gia hội thảo trên web miễn phí ngay bây giờ

Các hướng dẫn khác về Finxter

Học tập là một quá trình liên tục và bạn nên khôn ngoan để không bao giờ ngừng học hỏi và cải thiện trong suốt cuộc đời mình. 👑

Học gì?

Tôi khuyên bạn nên đọc ít nhất một hướng dẫn mỗi ngày [chỉ 5 phút cho mỗi hướng dẫn là đủ] để đảm bảo rằng bạn không ngừng học hỏi

💡 Nếu bạn muốn chắc chắn rằng mình không quên thói quen của mình, vui lòng tham gia học viện email miễn phí của chúng tôi để nhận các hướng dẫn mới hàng tuần và lời nhắc học tập trong INBOX của bạn

Ngoài ra, hãy lướt qua danh sách hướng dẫn sau đây và mở 3 hướng dẫn thú vị trong tab trình duyệt mới để bắt đầu thói quen học tập mới — hoặc tiếp tục với thói quen học tập hiện có — của bạn ngay hôm nay. 🚀

Khái niệm cơ bản về Python

  • Python Một dòng cho vòng lặp
  • Nhập mô-đun từ thư mục khác
  • Xác định loại đối tượng Python
  • Chuyển đổi danh sách chuỗi thành danh sách int
  • Chuyển đổi danh sách Int thành danh sách chuỗi
  • Chuyển đổi danh sách chuỗi thành danh sách nổi
  • Chuyển đổi danh sách thành mảng NumPy
  • Nối dữ liệu vào tệp JSON
  • Danh sách lọc Python
  • Danh sách lồng nhau

Quản lý phụ thuộc Python

  • Cài đặt PIP
  • Cách kiểm tra phiên bản Python của bạn
  • Kiểm tra phiên bản Pandas trong Script
  • Kiểm tra phiên bản Python Jupyter
  • Kiểm tra phiên bản gói PIP

Gỡ lỗi Python

  • Bắt và in ngoại lệ
  • Danh sách chỉ số vượt khỏi phạm vi
  • Sửa Giá trị Lỗi Sự thật
  • Không thể nhập tên X Lỗi

Nội dung thú vị

  • 5 Cheat Sheet Mỗi Python Coder cần sở hữu
  • 10 câu đố Python hay nhất để khám phá trình độ kỹ năng thực sự của bạn
  • Cách kiếm 1000 đô la từ bên lề với tư cách là một Freelancer Python

Cảm ơn bạn đã học với Finxter

lập trình viên

Q: How do you tell an introverted computer scientist from an extroverted computer scientist?

A: An extroverted computer scientist looks at your shoes when he talks to you.

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Làm cách nào để thêm mô-đun vào đường dẫn?

Đặt mô-đun. py trong thư mục nơi chương trình sẽ thực thi. Bao gồm thư mục chứa mô-đun. py trong biến môi trường PYTHONPATH . Hoặc bạn có thể đặt mô-đun. py vào một trong các thư mục có trong biến PYTHONPATH. Đặt mô-đun. py vào một trong các thư mục phụ thuộc vào cài đặt.

Đường dẫn cho các mô-đun trong Python là gì?

Python tìm kiếm các mô-đun trong “sys. Nó tìm kiếm một tệp có tên a_module. py trong các thư mục được liệt kê trong biến sys. đường dẫn .

Chủ Đề