Thêm vĩnh viễn đường dẫn tệp vào sys.path bằng Python


97

Tôi có một tệp được gọi là tệp example_file.pymà tôi muốn sử dụng từ nhiều tệp khác, vì vậy tôi quyết định thêm example_file.pyvào sys.pathvà nhập tệp này vào tệp khác để sử dụng tệp. Để làm như vậy, tôi đã chạy phần sau trong IPython.

import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
print(sys.path)

Tôi có thể thấy đường dẫn mà tôi vừa thêm và khi tôi cố gắng nhập tệp này từ một đường dẫn thư mục khác như sau:

import example_file

nó hoạt động tốt, nhưng khi tôi thoát ra khỏi IPython, nhập lại và kiểm tra sys.path, tôi thấy rằng đường dẫn mà tôi đã thêm không xuất hiện, vậy làm cách nào để thêm đường dẫn vào sys.path vĩnh viễn trong Python?


3
Làm cho mã của bạn trở thành một gói phù hợp, làm cho nó dễ_cài_đặt và hạnh phúc trong suốt phần đời còn lại của bạn (thay vì mày mò). Ngoài điều đó ra: mọi tài liệu đều cho bạn biết RÕ RÀNG rằng sys.path.append()chấp nhận một thư mục chứa tệp VÀ KHÔNG DUY NHẤT ĐẾN MỘT TẬP TIN.
Andreas Jung



Đừng nhầm lẫn giữa đường dẫn hệ thống với PYTHONPATH.
Burhan Khalid

Câu trả lời:


95

Có một số cách. Một trong những cách đơn giản nhất là tạo một my-paths.pthtệp (như mô tả ở đây ). Đây chỉ là một tệp có phần mở rộng .pthmà bạn đã đưa vào site-packagesthư mục hệ thống của mình . Trên mỗi dòng của tệp, bạn đặt một tên thư mục, vì vậy bạn có thể đặt một dòng vào đó /path/to/the/và nó sẽ thêm thư mục đó vào đường dẫn.

Bạn cũng có thể sử dụng biến môi trường PYTHONPATH, giống như biến PATH hệ thống nhưng chứa các thư mục sẽ được thêm vào sys.path. Xem tài liệu .

Lưu ý rằng bất kể bạn làm gì, sys.pathđều chứa các thư mục không phải tệp. Bạn không thể "thêm tệp vào sys.path". Bạn luôn thêm thư mục của nó và sau đó bạn có thể nhập tệp.


1
Được rồi, cảm ơn tôi đã thêm thư mục của tôi bao gồm tệp và nó hoạt động khi tôi nhập tệp từ một vị trí khác, có vấn đề khi tôi thoát ra khỏi ipython và một lần nữa đăng nhập để kiểm tra đường dẫn của tôi, nó không xuất hiện, tôi không muốn làm điều đó mỗi lần khi tôi bước vào mã, tôi muốn thêm đường dẫn thư mục để sys.path permanatly, làm thế nào để làm điều này
Shiva Krishna Bavandla

@Kouripm: Nhận xét của bạn cho thấy bạn đã không thực sự làm theo đề xuất của tôi, cũng như các đề xuất trong bài đăng trùng lặp được liên kết ở trên.
BrenBarn

1
Các sitegói là hoàn hảo.
Zeinab Abbasimazar

8
đã khắc phục sự cố của tôi với sys.path.append('C:\\python34\\lib\\site-packages')cảm ơn bạn!
tylerlindell

Đối với hậu thế: .pthtệp là cái mà tài liệu mô-đun site gọi a path configuration file. Lưu ý về tệp cấu hình đường dẫn:no check is made that the item refers to a directory rather than a file. No item is added to sys.path more than once. Blank lines and lines beginning with # are skipped. Lines starting with import (followed by space or tab) are executed.
Minh Tran

1

Cách này đã làm việc cho tôi:

thêm đường dẫn mà bạn thích:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

kiểm tra: bạn có thể chạy cmd 'export' và kiểm tra đầu ra hoặc bạn có thể kiểm tra nó bằng cmd này:

python -c "import sys; print(sys.path)"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.