Cách in PYTHONPATH

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']
5

Trong 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

  1. 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)
  2. Thư mục được đặt bởi biến môi trường PYTHONPATH (xem bên dưới để biết chi tiết)
  3. Thư mục làm việc hiện tại
  4. Ba thư mục cho thư viện tiêu chuẩn
  5. 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á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']

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ập

Thêm đường dẫn tìm kiếm mô-đun mới với sys.path.append()

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

  • Nhận đường dẫn của tệp hiện tại (tập lệnh) bằng Python.
    import os
    import sys
    
    sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
    
    1

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 theo

Liên kết được tài trợ

Thêm đường dẫn tìm kiếm mô-đun mới với PYTHONPATH

Sử 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__), '..'))
8

export 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"
0

Thư 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ô-đun

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) 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