Tôi có một thư mục đầy đủ các tập lệnh (giả sử project/bin
). Tôi cũng có thư viện ở số project/lib
và muốn tập lệnh tự động tải thư viện. Đây là những gì tôi thường sử dụng ở đầu mỗi tập lệnh:Python: Cách tốt nhất để thêm vào sys.path liên quan đến tập lệnh chạy hiện tại
#!/usr/bin/python
from os.path import dirname, realpath, sep, pardir
import sys
sys.path.append(dirname(realpath(__file__)) + sep + pardir + sep + "lib")
# ... now the real code
import mylib
Đây là loại cồng kềnh, xấu xí và phải được dán vào đầu mỗi tệp. Có cách nào tốt hơn để làm điều này?
Really những gì tôi đang hy vọng là một cái gì đó như suôn sẻ như thế này:
#!/usr/bin/python
import sys.path
from os.path import pardir, sep
sys.path.append_relative(pardir + sep + "lib")
import mylib
Hoặc thậm chí tốt hơn, cái gì đó sẽ không phá vỡ khi biên tập viên của tôi (hoặc ai đó có cam kết truy cập) quyết định sắp xếp lại nhập khẩu như là một phần của quá trình làm sạch của nó:
#!/usr/bin/python --relpath_append ../lib
import mylib
Điều đó sẽ không chuyển trực tiếp đến nền tảng không posix, nhưng nó sẽ giữ mọi thứ sạch sẽ.
Xem thêm: http://stackoverflow.com/questions/2349991/python-how-to-import-other-python-files/20749411#20749411 – dreftymac