Tải thông tin đăng nhập từ tệp python
Để giải thích thêm về câu hỏi của tôi, hãy tưởng tượng bạn đang làm việc trên một dự án Python cần mật khẩu để kết nối với cơ sở dữ liệu hoặc "bí mật ứng dụng khách" để kết nối với dịch vụ web. Đâu là nơi tốt nhất để lưu trữ thông tin đó để bạn không vô tình chia sẻ nó khi phân phối mã? Show Mẫu phổ biến nhất mà tôi từng thấy là nhúng nó trực tiếp vào tập lệnh Python, nhưng sau đó để trống, kèm theo nhận xét để bạn điền vào
Đến từ PHP, phương pháp tiêu chuẩn là lưu trữ thông tin đăng nhập dưới dạng các biến trong một tệp riêng biệt, sau đó nhập vào tập lệnh. Bằng cách đó, bạn có thể dễ dàng "gitignore" tệp đó, nhưng tôi không thấy điều này thường xuyên trong Python câu trả lờitầng 1
Trong trường hợp này, tôi nghĩ rằng nó phụ thuộc vào ứng dụng. Có một vài loại ứng dụng chính khác nhau (ít nhất là những loại mà tôi viết)
Hi vọng điêu nay co ich
Tầng 1 Trả lời
Tôi chưa bao giờ nghĩ đến việc lưu trữ thông tin đó dưới dạng các biến môi trường. ý tưởng gọn gàng tầng 2
Tôi thích sử dụng ConfigParser. Bạn sẽ tạo một tệp cấu hình và lưu trữ nó ở một nơi khác mà bạn có thể chỉnh sửa dễ dàng/khó khăn như bạn muốn (như thư mục vv). nó sẽ giống như
và sau đó, trên tập lệnh python thực tế của bạn, bạn sẽ nhập dữ liệu đó như thế này
và sau đó biến của bạn vượt qua bây giờ có mật khẩu. Đẹp và sạch sẽ Tầng 2
Điều này thật tuyệt vì bạn có thể tiếp tục gỡ lỗi. txt trong kiểm soát nguồn - và thay thế nó bằng tệp của riêng bạn
Chỉ cần lưu ý rằng vượt qua là một từ khóa ngôn ngữ và ngay cả khi có thể, bạn sẽ không muốn bỏ qua các từ khóa, như một thói quen lập trình tầng 34 năm trước Đối với một giải pháp rất đơn giản, hãy tạo một tệp Python, chẳng hạn như thông tin đăng nhập. py, trong cùng thư mục với tập lệnh của bạn. Viết từ điển với mật khẩu của bạn, như thế này
và như thế. Sau đó, trong tập tin kịch bản của bạn
Đảm bảo rằng bạn giữ tệp thông tin đăng nhập của mình không bị sửa đổi. Gitignore nếu cần tầng 4
những gì mọi người Django thường làm là có một tập lệnh Python (thường được gọi là local_settings. py) được loại trừ rõ ràng khỏi kho lưu trữ và nó được nhập vào tệp cài đặt thực được theo dõi tầng 4
Vâng, tôi sử dụng một cấu hình. ini chứa cả thông tin đăng nhập và cài đặt thông thường. Sau đó, tôi thêm cấu hình đó. ini thành git bỏ qua và một sample_config trống. ini không có giá trị cho repo tầng 5
Nếu nó chỉ là một kịch bản để sử dụng cá nhân, tôi thực sự thích keyring. Giao diện với Keychain. ứng dụng trên máy Mac của tôi, có giao diện rất thân thiện với người dùng và hãy để tôi sử dụng một |