Trong Python, danh sách các thư mục được tìm kiếm khi nhập các mô-đun và gói với import , đường dẫn tìm kiếm mô-đun, được lưu trữ trong sys.path Bài viết này mô tả cách kiểm tra các đường dẫn tìm kiếm mô-đun hiện tại và thêm các đường dẫn mới - Kiểm tra đường dẫn tìm kiếm mô-đun với
sys.path - Thêm đường dẫn tìm kiếm mô-đun mới với
sys.path.append() - Thêm đường dẫn tìm kiếm mô-đun mới với
PYTHONPATH - Thêm đường dẫn tìm kiếm mô-đun mới với tệp cấu hình đường dẫn (
pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
0)
Xem bài viết sau để biết cách sử dụng cơ bản của import - Cách nhập mô-đun, gói, chức năng, v.v. trong Python
Liên kết được tài trợ Kiểm tra đường dẫn tìm kiếm mô-đun với sys.pathĐường dẫn tìm kiếm mô-đun hiện tại được lưu trữ trong sys.path sys.path là danh sách các chuỗi chỉ định đường dẫn tìm kiếm mô-đun. Bạn có thể kiểm tra các mục với
pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
5Trong ví dụ này, pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
6 được sử dụng để dễ đọc hơn- In đẹp với pprint trong Python
import sys
import pprint
pprint.pprint(sys.path)
nguồn. Khi thực hiện, kết quả như sau pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
nguồn. Kết quả phụ thuộc vào môi trường. Trong môi trường ví dụ (Mac với Python3 được cài đặt bởi Homebrew), các thư mục sau được lưu trữ trong sys.path - Thư mục chứa tập lệnh đã thực thi (
pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
8) - Thư mục được đặt bởi biến môi trường
PYTHONPATH (xem bên dưới để biết chi tiết) - Thư mục làm việc hiện tại
- Ba thư mục cho thư viện tiêu chuẩn
- Thư mục
cd ..
pwd
# /Users/mbp/Documents/my-project/python-snippets
python3 notebook/print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
0 dành cho thư viện bên thứ ba được cài đặt với cd ..
pwd
# /Users/mbp/Documents/my-project/python-snippets
python3 notebook/print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
1
Nếu bạn di chuyển thư mục hiện tại trong thiết bị đầu cuối và thực hiện lại nó, thì cd ..
pwd
# /Users/mbp/Documents/my-project/python-snippets
python3 notebook/print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
2 sẽ chuyển sang đường dẫn kháccd ..
pwd
# /Users/mbp/Documents/my-project/python-snippets
python3 notebook/print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
nguồn. Vì đường dẫn tìm kiếm mô-đun thay đổi tùy thuộc vào thư mục hiện tại, quá trình nhập có thể không hoạt động tùy thuộc vào nơi tệp tập lệnh được thực thi Các mô-đun được tìm kiếm theo thứ tự sys.path . Do đó, các mô-đun trong thư mục chứa tệp tập lệnh đã thực thi ( pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
8) được tìm kiếm đầu tiên. Lưu ý rằng nếu có một tệp có cùng tên với thư viện chuẩn trong cùng thư mục với tệp tập lệnh được thực thi, tệp đó sẽ được nhậpThêm đường dẫn tìm kiếm mô-đun mới với sys.path.append()Vì sys.path chỉ là một danh sách nên bạn có thể thêm các đường dẫn mới. Trong ví dụ này, phương thức cd ..
pwd
# /Users/mbp/Documents/my-project/python-snippets
python3 notebook/print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
7 được sử dụng, nhưng bạn cũng có thể sử dụng phương thức cd ..
pwd
# /Users/mbp/Documents/my-project/python-snippets
python3 notebook/print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
8, v.v.- Thêm một mục vào danh sách trong Python (chắp thêm, mở rộng, chèn)
Nếu bạn import sau khi thêm đường dẫn vào sys.path , bạn có thể nhập các mô-đun trong đường dẫn đã thêm Ví dụ: nếu bạn muốn thêm một thư mục ở trên tệp script một cấp, bạn có thể viết như sau import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
nguồn. Thêm vào sys.path chỉ hoạt động trong mã đó. Nếu bạn muốn thêm đường dẫn vĩnh viễn, hãy sử dụng tệp PYTHONPATH hoặc pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
0 được mô tả tiếp theoLiên kết được tài trợ Thêm đường dẫn tìm kiếm mô-đun mới với PYTHONPATHSử dụng biến môi trường PYTHONPATH để thêm vĩnh viễn đường dẫn tìm kiếm mô-đun Đối với hệ điều hành giống Unix bao gồm cả Mac, hãy thêm phần sau vào import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
7, chẳng hạn. Để chỉ định nhiều đường dẫn, hãy phân tách chúng bằng dấu hai chấm import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
8export PYTHONPATH="/path/to/add:$PYTHONPATH"
Trong Windows, bạn có thể thêm PYTHONPATH cũng như các biến môi trường thông thường bằng cách nhấp chuột phải vào PC (Máy tính của tôi) -> Hệ thống -> Thuộc tính hệ thống -> Biến môi trường. Trong Windows, phân tách nhiều đường dẫn bằng dấu chấm phẩy export PYTHONPATH="/path/to/add:$PYTHONPATH"
0Thư mục export PYTHONPATH="/path/to/add:$PYTHONPATH"
1 trong ví dụ trên được thêm vào PYTHONPATH Thêm đường dẫn tìm kiếm mô-đun mới với tệp cấu hình đường dẫn (pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
0)Nếu bạn đặt tệp cấu hình đường dẫn ( pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
0) trong thư mục cd ..
pwd
# /Users/mbp/Documents/my-project/python-snippets
python3 notebook/print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
0, bạn có thể thêm đường dẫn tìm kiếm mô-đunTệp cấu hình đường dẫn ( pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook
python3 print_sys_path.py
# ['/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/Users/mbp/Documents/lib',
# '/Users/mbp/Documents/my-project/python-snippets/notebook',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
# '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
# '/usr/local/lib/python3.7/site-packages']
0) phải chứa một đường dẫn trên mỗi dòng. Nó có thể là đường dẫn tương đối hoặc đường dẫn tuyệt đối. Có thể viết bình luận với export PYTHONPATH="/path/to/add:$PYTHONPATH"
7. Tên tệp có thể là bất kỳ thứ gì miễn là phần mở rộng là export PYTHONPATH="/path/to/add:$PYTHONPATH"
8
Làm cách nào để in đường dẫn os bằng Python?
getcwd() trả về đường dẫn tuyệt đối của thư mục làm việc hiện tại nơi Python đang chạy dưới dạng chuỗi str. getcwd là viết tắt của "lấy thư mục làm việc hiện tại" và lệnh Unix pwd là viết tắt của "in thư mục làm việc". Tất nhiên, bạn có thể in thư mục làm việc hiện tại bằng os. getcwd() và print() .
Làm cách nào để đặt Pythonpath trong Python?
Đường dẫn sẽ được thiết lập để thực thi các chương trình Python. . Nhấp chuột phải vào My Computer và nhấp vào thuộc tính Nhấp vào Cài đặt hệ thống nâng cao Nhấp vào tab Biến môi trường Nhấp vào tab mới của biến người dùng Viết đường dẫn trong tên biến Sao chép đường dẫn của thư mục Python Dán đường dẫn của Python vào giá trị biến
Làm cách nào để có Pythonpath trong Linux?
Thiết lập đường dẫn tại Unix/Linux . Trong shell csh − gõ setenv PATH "$PATH. /usr/local/bin/python3" và nhấn Enter Trong bash shell (Linux) − gõ export PYTHONPATH=/usr/local/bin/python3. 4 và nhấn Enter Trong shell sh hoặc ksh − gõ PATH = "$PATH. /usr/local/bin/python3" và nhấn Enter |