Chỉnh sửa: dựa trên nhận xét của Ulf Rompe, điều quan trọng là bạn phải sử dụng "1" thay vì "0" , nếu không bạn sẽ phá vỡ sys.path .
Tôi đã làm python khá lâu rồi (hơn một năm) và tôi luôn bối rối tại sao mọi người khuyên bạn nên sử dụng sys.path.append()
thay vì sys.path.insert()
. Hãy để tôi chứng minh.
Giả sử tôi đang làm việc trên một mô-đun có tên PyWorkbooks (được cài đặt trên máy tính của tôi), nhưng tôi đang đồng thời làm việc trên một mô-đun khác (giả sử PyJob) kết hợp PyWorkbooks. Khi đang làm việc trên PyJob, tôi tìm thấy lỗi trong PyWorkbooks mà tôi đang sửa, vì vậy tôi muốn nhập phiên bản phát triển.
Có nhiều cách để làm việc trên cả hai (ví dụ: tôi có thể đặt dự án PyWorkbooks của mình bên trong PyJob), nhưng đôi khi tôi vẫn cần phải thử với đường dẫn. Tuy nhiên, tôi không thể chỉ đơn giản thực hiện một sys.path.append()
thư mục mà PyWorkbooks đang ở . Tại sao? Bởi vì python sẽ tìm thấy PyWorkbooks đã cài đặt của tôi trước tiên!
Đây là lý do tại sao bạn phải thực hiện sys.path.insert (1, path_to_dev_pyworkbooks)
Tóm tắt:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
hoặc là:
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
Điều này đã gây ra một vài sự cố đối với tôi trong quá khứ và tôi thực sự muốn điều đó nếu chúng tôi (với tư cách là một cộng đồng) bắt đầu đề xuất sys.path.insert(1, path)
, như thể bạn đang chèn một đường dẫn theo cách thủ công, tôi nghĩ có thể nói rằng đó là đường dẫn bạn muốn để sử dụng!
Hay tôi có gì đó không ổn? Đó là một câu hỏi đôi khi làm tôi khó chịu và tôi muốn nó được mở!
sys.path.insert(1, dev_folder)
nhưng vẫn không tìm thấy mô-đun nhà phát triển và chỉ sử dụng mô-đun đã cài đặt. Làm cách nào để sửa lỗi này?