Làm thế nào python tìm thấy các mô-đun của nó
Được thực hiện nghiêm ngặt, một mô-đun là một tệp python, trong khi gói là một thư mục chứa các tệp python, kèm theo một tệp (có thể để trống) có tên __init__.py
, để nói với python đó là một gói để nhập mô-đun từ đó. Trong cả hai trường hợp, các mô-đun cần .py
phần mở rộng của chúng , nhưng việc nhập chúng được thực hiện mà không cần (xem thêm bên dưới).
Theo mặc định, Python tìm các mô-đun và gói của nó trong $PYTHONPATH
.
Để tìm hiểu những gì được bao gồm trong $ PYTHONPATH, hãy chạy đoạn mã sau trong python (3):
import sys
print(sys.path)
Cách thêm thư mục
Thỉnh thoảng
Từ trong tệp python, thỉnh thoảng bạn có thể thêm (các) đường dẫn vào đường dẫn mặc định bằng cách thêm các dòng sau vào phần đầu của ứng dụng hoặc tập lệnh python của bạn:
import sys
sys.path.insert(0, "/path/to/your/package_or_module")
Ví dụ:
nếu tôi có một thư mục: /home/myname/pythonfiles
và tôi muốn nhập tệp module_1.py
, nằm trong thư mục đó, tôi thêm phần này vào phần đầu của mã:
import sys
sys.path.insert(0, "/home/myname/pythonfiles")
Và tôi chỉ có thể nhập tệp module_1.py
bằng cách:
import module_1
Khi tôi tạo một gói và muốn nhập (các) mô-đun từ gói, tôi cần tạo một thư mục $PYTHONPATH
chứa, chứa các mô-đun, kèm theo một tệp (có thể để trống) được gọi là__init__.py
Ví dụ:
Để nhập từ gói (thư mục) được gọi my_package
trong /home/myname/pythonfiles
, hãy thêm /home/myname/pythonfiles
đường dẫn vào $PYTHONPATH
, như trong ví dụ 1 và nhập mô-đun được gọi module_2.py
(bên trong thư mục gói) chỉ bằng: `
from <packagename> import module_2
Thêm thư mục vào $PYTHONPATH
vĩnh viễn:
Thêm dòng sau vào ~/.profile
tập tin của bạn .
export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add
Thư mục con
Từ trong một gói, các thư mục con không được bao gồm như thế; bạn cần "xâu chuỗi" các thư mục. Để nhập một mô-đun module_3.py
, bên trong thư mục subfolder
bên trong thư mục packagename
:
import packagename.subfolder.module_3
Với thực tế là tất cả các thư mục con trong gói bao gồm __init__.py
tệp riêng của họ .
Khi một mô-đun nằm trong cùng thư mục với tập lệnh hoặc ứng dụng
Không cần phải chèn đường dẫn đến một mô-đun khi nó nằm trong cùng thư mục với tập lệnh hoặc ứng dụng, nó sẽ tự động được thêm vào.
Thí dụ:
Nếu tôi có một thư mục, chứa script.py
và module.py
, tôi chỉ có thể nhập mô-đun bằng cách:
import module
__init__.py
tập tin trong thư mục của bạn? đây là cách python tạo ra các gói và cho phép bạn nhập các mô-đun từ gói đó. guide.python-distribution.org/creation.html