{"id":19373458,"url":"https://github.com/nguyenducquan12/virtual_environment_python","last_synced_at":"2026-04-15T12:37:38.719Z","repository":{"id":245773579,"uuid":"819188640","full_name":"NguyenDucQuan12/virtual_environment_python","owner":"NguyenDucQuan12","description":"Tất cả kiến thức về làm việc môi trường ảo ở python mà mình tích lũy được. Nó giúp mình quản lý các dự án tốt hơn, có thể sử dụng nhiều phiên bản python cũng như các thư viện để không xung đột với nhau","archived":false,"fork":false,"pushed_at":"2025-12-23T06:35:58.000Z","size":126,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-24T21:33:40.770Z","etag":null,"topics":["python","venv","venv-python","virtual-environments"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NguyenDucQuan12.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-24T02:31:58.000Z","updated_at":"2025-12-23T06:36:01.000Z","dependencies_parsed_at":"2025-02-24T14:48:48.228Z","dependency_job_id":"a63a2ab2-b8a5-49f5-a29c-5eef52ff27ec","html_url":"https://github.com/NguyenDucQuan12/virtual_environment_python","commit_stats":null,"previous_names":["nguyenducquan12/virtual_environment_python"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NguyenDucQuan12/virtual_environment_python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NguyenDucQuan12%2Fvirtual_environment_python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NguyenDucQuan12%2Fvirtual_environment_python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NguyenDucQuan12%2Fvirtual_environment_python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NguyenDucQuan12%2Fvirtual_environment_python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NguyenDucQuan12","download_url":"https://codeload.github.com/NguyenDucQuan12/virtual_environment_python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NguyenDucQuan12%2Fvirtual_environment_python/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31842187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T11:29:19.690Z","status":"ssl_error","status_checked_at":"2026-04-15T11:29:19.171Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","venv","venv-python","virtual-environments"],"created_at":"2024-11-10T08:28:25.808Z","updated_at":"2026-04-15T12:37:38.705Z","avatar_url":"https://github.com/NguyenDucQuan12.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# virtual_environment_python\nTất cả thông tin về làm việc môi trường ảo ở python mà mình tích lũy được  \n\n### Đặt thư mục ảo nên có chữ `venv` để dễ nhận biết, ví dụ: `venv`, `Camera_venv`  \n\n\n## Tạo môi trường ảo với `Visual studio code`  \n\nTạo một thư mục để chứa dự án code: ví dụ `Work_with_camera`    \n\nMở `Visual studio code` --\u003e `Add folder to workspace` --\u003e add `Work_with_camera`--\u003e Chọn `Yes`  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/cea6056d-ee33-484a-b9c5-450689c9cf92\"\u003e  \n\nSau đó ta có các thư mục sẽ chứa code nằm bên phải:  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/7200d931-b581-4c67-8c9f-ae51598fcc71\"\u003e  \n\n`Mở Terminal của thư mục Work_with_camera và thực hiện các câu lệnh từ bước sau bằng termial`  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/16cb182c-fc8d-4c9a-ad37-47698c5ffa58\"\u003e  \n\nBước 1: Tạo môi trường ảo `venv` bên trong thư mục `Work_with_camera`:  \nTrong đó `venv_project` là tên thư mục chứa môi trường ảo, `\"venv camera\"` sẽ là tên hiển thị khi kích hoạt môi trường ảo\n```\npython -m venv venv_project --prompt=\"venv camera\"\n```  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/73348eff-7aea-4b2c-a34c-8c811d0e0674\"\u003e  \n\n### Cách phía trên sẽ áp dụng phiên bản python mặc định của máy vào thư mục ảo  \n\nĐể cài một phiên bản python khác ta sử dụng cách sau:  \n+ Đầu tiên cần tải cài 1 phiên bản python khác từ trang chủ python (khi cài đặt nhớ tích vào ô add PATH ...)\n+ Chạy lệnh phía dưới để liệt kê danh sách các phiên bản `python` đã cài trên máy  \n```\npy --list\n```\n\n\u003cimg src=\"https://github.com/user-attachments/assets/4d42b085-11d6-4b0e-91b5-4abf9d72c464\"\u003e  \n\nChạy lệnh sau để cài phiên bản python cụ thể, ví dụ với `python 3.12`:  \n```\npy -3.12 -m venv .project_1 --prompt=\"project1_312\"\n```\n```\nĐể check phiên bản đang cài thì chỉ cần kích hoạt môi trường ảo và chạy lệnh  \npython --version  \n \n```\nTa có thể thấy, trên máy có 2 phiên bản python đó là `python 3.12` và `python 3.10`, sau đó ta kiểm tra phiên bản python hiện tại thì nhận được kết quả là `python 3.10`  \nSau khi cài đặt môi trường ảo và kích hoạt môi trường ảo và check lại thì nhận được kết quả là `python 3.12`, vậy là đã thành công  \n\u003cimg src=\"https://github.com/user-attachments/assets/0be1bbc9-a43f-45cf-aacd-31cf494d187e\"\u003e \n\nBước 2: Kích hoạt môi trường ảo bằng `terminal` bằng cách vào thư mục `venv_project/Scripts` và copy đường dẫn `activate`:  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/2d1b0ac0-b1b0-4838-b73a-202c0e7c202a\"\u003e  \n\n```\nvenv_project\\Scripts\\activate  \n```\n\n\u003cimg src=\"https://github.com/user-attachments/assets/24b331ec-e8b9-4f15-9952-7c87d970ebe0\"\u003e  \n\nNếu mà không kích hoạt được ở `terminal` khi gặp lỗi như hình ảnh bên dưới:  \n```\n.project_1\\Scripts\\activate : File D:\\Dự án\\Python312\\.project_1\\Scripts\\Activate.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at \nhttps:/go.microsoft.com/fwlink/?LinkID=135170.\nAt line:1 char:1\n+ .project_1\\Scripts\\activate\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    + CategoryInfo          : SecurityError: (:) [], PSSecurityException\n    + FullyQualifiedErrorId : UnauthorizedAccess\n```\n\n\u003cimg src=\"https://github.com/user-attachments/assets/7bfcf901-177d-44d3-8ef0-86c673ba0d69\"\u003e  \n\nthì cần chạy lệnh này trước khi chạy lại lệnh trên:  \n```\nSet-ExecutionPolicy RemoteSigned -Scope CurrentUser  \n```\n\nBước 3: Cài đặt các thư viện cần thiết:  \n\n```\npython -m pip install -r requirements.txt  \n```\n\nNếu có chỉnh sửa, thay đổi thư viện thì thêm vào file bằng câu lệnh sau:  \n\n```\npython -m pip freeze \u003e requirements.txt\n```\n\nNếu xuất hiện lỗi: `pip: Fatal error in ...` thì chạy 2 lệnh sau để khắc phục lỗi:  \n\n```\npython -m pip install --upgrade --force -reinstall pip  \npython -m pip freeze  \n```\n\n## Lỗi khi import thư viện\n### Khi import một số thư viện vào môi trường ảo thường sẽ gặp lỗi `Import \"newlibrary\" could not be resolved`, tuy nhiên code vẫn hoạt động bình thường, lỗi xuất hiện nhìn khó chịu, vì vậy cần sửa như sau:  \n\n\u003cimg src=\"https://github.com/NguyenDucQuan12/virtual_environment_python/assets/68120446/99a31ec5-2246-49f8-87a5-c4761e57f158\"\u003e  \n\nCó 2 cách để sửa lỗi. Thử cách 1 xong đến cách 2.  \n\n\u003e Lựa chọn môi trường ảo khớp với thư mục đang làm việc\n\nĐầu tiên ta ấn tổ hợp phím: `Ctrl + Shift + P`. Sẽ xổ ra các lựa chọn.  \n\nTa tìm và chọn chức năng: `Python: Select Interpreter`.  \n\nSau đó chọn thư mục mà chúng ta vừa tạo môi trường ảo.  \n\nCuối cùng sẽ sổ ra các phiên bản python, ta chọn phiên bản python mà chúng ta vừa tạo, có tên môi trường ảo ta vừa tạo. Thường nó sẽ có tên đề xuất là `Recommended`.  Chọn phiên bản đó là được.  \n\n\u003e Thêm thư mục làm việc vào Extra Path  \n\nBước 1: Mở `setting` từ màn hình `visual studio code` bằng cách nhấn `Ctrl + ,` và tìm kiếm từ khóa `pylance` và tìm đến mục `Python\u003eAnalysis: Extra Paths` rồi thêm đường dẫn thư viện của dự án đang làm việc như hình ảnh:  \n\n\u003cimg src=\"https://github.com/NguyenDucQuan12/virtual_environment_python/assets/68120446/c3586623-00d8-4b88-8ec6-1ef752f6261a\"\u003e  \n\nBước 2: Nhấn `OK` để lưu và lỗi sẽ mất nếu thư viện đó bạn đã cài bằng `pip`  \n\n## Khi import một hàm từ file python khác như mô đun bằng đường dẫn tuyệt đối nhưng không được, còn đường dẫn tương đối thì được (không nên sử dụng đường dẫn tương đối)  \nĐường dẫn tương đối là sử dụng, không nên sử dụng cách này  \n```\nfrom ....service.schemas import function  \n```\nSử dụng đường dẫn tuyệt đối  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/57d6bdd3-18df-4656-b746-720960ead48f\"\u003e \n\nĐể có thể nhập được đường dẫn tuyệt đối (import hàm của thư mục cha vào thư mục con)  \n\n\u003e Đầu tiên ta cần phải tạo một tệp tin \"__init__.py\" trống như các hình ảnh phía trên  \n\u003e Mỗi thư mục mà chứa tệp tin cần import nó thì ta sẽ tạo tệp tin init kia (ngoại trừ thư mục gốc, hoặc thư mục chứa file main thì ko cần thêm, vì nó ko có file nào import cả)\n\nBước 1: Chuột phải vào `This PC` chọn `Properties`  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/88ff0e13-76a6-4dfa-96b8-9a0a82932ff1\"\u003e \n\nChọn `Advanced system settings` và vào `Enviroment Variable`  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/ac27406f-b126-4048-949b-cb7d3710a3a4\"\u003e \n\nBước 2: Chọn `New` trong mục `System Variable` và điền thông tin như sau  \n`Variable Name` sẽ là `PYTHONPATH`  \n`Variable value` sẽ là đường dẫn đến dự án của bản thân  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/a0558238-eeb6-4ae2-beda-dd315816d1b1\"\u003e \n\nSau đó mở lại visual studio code và import các hàm của thư mục khác  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/b0264b42-a584-4384-9d44-927e960d28ef\"\u003e\n\n# Cách debug trong môi trường ảo của python với visual studio code\nĐầu tiên cần đặt `Breakpoint` tại các dòng code sinh ra rỗi, hoặc bạn nghi dòng đó có thể dẫn đến lỗi  \n\n\u003cimg src=\"https://github.com/NguyenDucQuan12/virtual_environment_python/assets/68120446/bb2e8881-decd-4f57-abc9-865821f51cff\"\u003e\n\n\nVí dụ ở hình ảnh phía trên là đặt `Breakpoint` ở dòng 225 bằng cách `click chuột` vào bên trái dòng 225 là được.\n\n## Cách 1\n* Mở bảng điều khiển\nNhấn `Ctrl+Shift+P` và tìm kiếm `Python: Select interpreter` như ảnh dưới:\n\n\u003cimg src=\"https://github.com/NguyenDucQuan12/get_rtsp_ipcamera/assets/68120446/613483fe-14b9-4440-b795-adc6a0d5718f\"\u003e\n\n\n* Chọn thư mục chứa môi trường ảo và chọn phiên bản python phù hợp theo cú pháp `python x.xx.x ('name_folder':venv)`:\n\n\u003cimg src=\"https://github.com/NguyenDucQuan12/get_rtsp_ipcamera/assets/68120446/72e84611-498d-44df-9875-c90a97dc83b2\"\u003e  \n\nNếu không hiển thị môi trường ảo của bạn vừa tạo thì ấn `Enter interpreter path..` xong ấn `find` vào thư mục thoe đường dẫn `project/Scripts/python.exe` và chọn  \n\n\u003cimg src=\"https://github.com/user-attachments/assets/b18b316d-0ae3-4751-ab74-95d8ead8511c\"\u003e\n\n\n* Xong nhấn `F5` để debug\n\n## Cách 2  \n* Thêm file `launch.json`\nNhấn vào tab `debug` bên trái và chọn mũi tên xuống dưới để thêm file `launch.json`:\n\n\u003cimg src=\"https://github.com/NguyenDucQuan12/get_rtsp_ipcamera/assets/68120446/b1729e14-5f8a-470b-913d-ad4f6e276335\"\u003e\n\n \n* Chọn `add config (thư mục ảo cần debug)` và thêm dòng : `\"justMyCode\": false`.\n\n\u003cimg src=\"https://github.com/NguyenDucQuan12/get_rtsp_ipcamera/assets/68120446/209c40aa-44d2-4806-aafb-505c0d188056\"\u003e  \n\n\n* Lưu lại file và nhấn 1 trong 2 lựa chọn bên dưới để debug\n\n\u003cimg src=\"https://github.com/NguyenDucQuan12/virtual_environment_python/assets/68120446/dd3fae7f-113c-46f4-8203-80ffd7418a54\"\u003e  \n\n\n`F5 và 2 bấm nút 2 lựa chọn` sẽ cho hai kết quả khác nhau  \n\n## ⭐ Star History\n\n\u003ca href=\"https://github.com/NguyenDucQuan12/virtual_environment_python/stargazers\"\u003e\n        \u003cimg width=\"500\" alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=NguyenDucQuan12/virtual_environment_python\u0026type=Date\"\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnguyenducquan12%2Fvirtual_environment_python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnguyenducquan12%2Fvirtual_environment_python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnguyenducquan12%2Fvirtual_environment_python/lists"}