Điểm:1

Cách sử dụng pipenv để cài đặt các ứng dụng 'toàn cầu' để chạy dưới dạng dịch vụ

lá cờ nc

Được đăng chéo từ Stack Overflow vì nó có thể lạc đề ở đó.

Tôi đang cố gắng sử dụng pipenv để phân phối ứng dụng Python tới máy chủ (trong trường hợp này là Windows, nhưng tôi cũng không chắc chắn tương tự với Linux).

trước đây tôi đã làm như sau:

  1. Cài đặt Python trên toàn hệ thống
  2. cài đặt pip pipenv

sau đó cài đặt pipenvchạy pipenv như bình thường. Điều này có lợi thế (tôi nghĩ) mà bất kỳ người dùng nào hoặc thực sự là một người sử dụng dịch vụ có thể chạy các lệnh này. Mục đích của tôi là ứng dụng Python thường sẽ được chạy như một dịch vụ (sử dụng nssm trên Windows) nhưng bất kỳ người dùng nào cũng có thể chạy mà không cần phải cài đặt pipenv.

Tuy nhiên, các tài liệu chính thức khuyên người dùng cài đặt để 'tránh phá vỡ các gói hệ thống' cài đặt pip --user pipenv hoặc thông qua pipx. Trong cả hai trường hợp, kết quả là tệp nhị phân pipenv kết thúc trong thư mục người dùng phải được thêm vào PATH trừ khi bạn muốn tham chiếu nó bằng đường dẫn đầy đủ. Thật sai lầm khi có một dịch vụ chỉ vào tệp nhị phân trong các thư mục cá nhân của tôi, tương tự như vậy, những người dùng khác sẽ phải cài đặt pipenv của riêng họ hoặc thêm các thư mục của tôi vào đường dẫn của họ. Tất cả điều này có vẻ rất kỳ lạ, nhưng có lẽ tôi đã bỏ lỡ điều gì đó. Có điều gì đó sai với cách tiếp cận của tôi? Có cách tiếp cận 'thực hành tốt nhất' để sử dụng pipenv để triển khai không?

Một số nhầm lẫn hơn nữa Tôi đã thử nghiệm điều này thêm một chút và nhận ra rằng ngay cả khi pipenv được cài đặt ở cấp hệ thống, "virtualenv" vẫn được tạo ở cấp người dùng. Tuy nhiên, tôi thấy điều này có thể được thay đổi bằng một biến môi trường để đặt "virtualenv" vào bên trong dự án. Hơn nữa, tôi đã phát hiện ra rằng trên Windows, tôi không thể chạy pipenv để hoạt động từ một dịch vụ vì nó dường như không kích hoạt virtualenv. Thay vào đó, tôi phải tạo một tệp bó kích hoạt virtualenv và thực thi main.py, sau đó trỏ NSSM vào đó.

TLDR: Tôi đang tìm quy trình triển khai bằng cách sử dụng pipenv để phần mềm Python chạy dưới dạng dịch vụ*. Lý tưởng nhất là tôi muốn điều này độc lập với nền tảng, vì vậy tôi có thể sử dụng quy trình làm việc tương tự trong các máy chủ Windows và Linux.

* Trên Windows, tôi định sử dụng NSSM để chạy dịch vụ, trên Linux systemd. Tôi hài lòng (ish) với những công cụ này, đó là pipenv làm tôi bối rối.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.