Import module trong Python

Mình đang học python nhưng gặp một vấn đề là không biết cách import module. Cấu trúc thư mục như dưới đây:

root
|  -- app.py
|  -- pkg1
------ |    file1.py
------ |    file2.py
|  -- pkg2
--------|    file3.py
--------|    file4.py
--------|    pkg2.1
----------------|      file5.py
----------------|      file6.py

Đối với file1.py muốn dùng các hàm trong file3.py mình sử dụng câu lệnh

from ..pkg2.file3 import *

Đối với file1.py muốn dùng các hàm trong file5.py mình sử dụng câu lệnh

from ..pkg2.file5 import *

Nhưng mình không thể sử dụng các hàm của file1.py trong file5.py, trong file5.py mình sử dụng câu lệnh

from ....pkg1.file1 import *

Làm sao để mình có thể import với các file khác nhau nhiều cấp như thế??
Thanks

1 Like

Hình như cái title không liên quan đến cái post. Bạn muốn import các code trong 1 file nào đó về với file mà bạn đang work chứ có phải muốn import module trong Python đâu nhỉ?
Với lại mấy cái dấu . phía trước đó có ý nghĩa gì vậy?

2 Likes

@Uni bạn có vẻ như chưa code python bao giờ nên có điều không rõ. Trong python mỗi file .py đều được coi là 1 module. Nên việc import 1 file hoặc 1 function/object/class trong 1 file py nào đó đều là import module để sử dụng. Dấu . ở đầu mỗi tên module đó đại diện cho 1 thư mục chứa module đó. . là cùng cấp, .. là cấp cha, .. là cấp cha của cấp cha, cứ thế tiếp tục. Nếu không có dấu . ở đầu thì coi như import tại cấp root trong site packages
Quay trở lại với câu hỏi của bạn thớt, để import được pkg1.file1 từ pkg2.file5 thì thay vì lần ngược lên cấp cha bằng ... thì bạn có thể dùng thẳng pkg1.file1 để import. Đi xuôi từ root

9 Likes

@qloved Thế à, mình biết Python từ khá lâu về trước mà không biết cái này, chắc do mình học không thực sự nghiêm túc cho lắm (Học theo kiểu thấy có gì thú vị trên mạng là thử) và cũng khá lười học Python nên chắc bỏ sót khái niệm này :frowning:

5 Likes

Đây cũng là một lần học đó bạn, như xe thôi, thủng đâu vá đó.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?