- VisualStudio2022
- pprof-Hướng dẫn sử dụng nó trong bản mạng trực tiếp
- Triển khai C# các loại hộp chọn nhiều màu lựa chọn thả xuống, cây lựa chọn nhiều màu lựa chọn thả xuống và các nút tối đa
- [Ghi chú học tập] Cơ sở dữ liệu cấu trúc: cat tree
Tiểu Vương được phát triển dựa trên năm dựa trên TensorFlow 1.x; ở đây, yêu cầu tính năng mới của TensorFlow 2. x. công việc này không chỉ nhạt mà còn thường xuyên dẫn đến sai sót.
"Không có cách nào để mỗi dự án sử dụng môi trường Python chuyên dụng của riêng mình?" Xiao Wang đã nêu câu hỏi này tại tham gia dự án nhóm.
Trên thực tế, vấn đề này đã được giải pháp hoàn thiện trong cộng đồng Python: môi trường ảo (Môi trường ảo) ngày nay, chúng ta cũng tìm thấy chúng. Hiểu một cách toàn diện về môi trường Virtual Python từ nguyên tắc đến thực tiễn.
Khi bạn cài đặt Python trên hệ thống của mình, bạn sẽ nhận được:
hệ điều hành
,hệ thống
Chờ đợiKhi chúng tôi thực hiện lệnh python, hệ thống sẽ:
nhập sys print(sys.path)
Danh sách đường dẫn này được xác định rõ ràng nơi mô-đun đầu vào Python.
Trên thực tế, môi trường ảo không phải là bản sao hoàn chỉnh của Python mà tạo ra một môi trường thư mục độc lập trong đó:
thùng/
hoặc bản/
(Windows) folder chứa biểu tượng liên kết đến Python thông dịchlib/gói-trang web/
Các gói lưu trữ bên trong thư mục cho môi trường nàypyvenv.cfg
Cấu hình thông tin môi trường lưu trữ tệpVui lòng tạo một môi trường ảo để xác thực:
python -m venv my_project_env
Xem thư mục cấu hình được tạo:
my_project_env/ ├── bin/ # System Unix │ ├── python # Liên kết biểu tượng đặc trưng của hệ thống Python │ ├── pip │ └── kích hoạt # Kích hoạt tập lệnh ├── lib/ │ └── python3.x/ │ └─ ─ gói trang web/ └── pyvenv.cfg #Cấu hình tập tin
Khi chúng tôi kích hoạt môi trường ảo:
# Nguồn hệ thống Unix my_project_env/bin/activate # Windows .\my_project_env\Scripts\activate
Kích hoạt lệnh sẽ sửa đổi các môi trường biến, yếu tố chủ yếu là:
CÔN ĐƯỜNG
, tạo môi trường ảo cái thùng
Thư mục đầu tiênPYTHON_PATH
PYTHON_PATH chỉ định các plugin thư mục có thể chứa các mô-đun mà bạn muốn Python có thể truy cập.
Nhắc đến môi trường ảo, nhiều người sẽ hỏi: "venv và conda có gì khác nhau? Tôi nên dùng cái nào?".
Hãy so sánh với một ví dụ cụ thể.
Sử dụng venv:
python -m venv ds_project nguồn ds_project/bin/kích hoạt pip cài đặt numpy pandas scikit-learn
Sử dụng conda:
conda tạo -n ds_project python=3.8 conda kích hoạt ds_project conda cài đặt numpy pandas scikit-learn
Nhìn bề ngoài, cả hai đều rất giống nhau, nhưng trên thực tế có những cơ bản khác biệt:
Cài đặt mức độ.
venv
Chỉ cách các gói Pythonchung
Có thể thiết lập mọi phần phụ thuộc (bao gồm thư viện C, hệ thống gói)Phiên bản Python.
venv
Sử dụng phiên bản Python khi môi trường được tạochung
Bạn có thể chỉ định tùy chọn Python phiên bảnQuản lý gói.
venv
Cài đặt gói từ PyPI bằng pipchung
Sử dụng gói quản lý hệ thống riêng của bạn để xử lý các phần phụ thuộc phức tạpTuy nhiên, sẽ thuận tiện hơn khi phát triển dựa trên venv, vì nó đi kèm với python và không yêu cầu cài đặt bổ sung, trong khi conda yêu plug-in install plug-in.
Hãy yên tâm sử dụng venv thông qua một dự án thực tế. cần sử dụng các yêu cầu và beautifulsoup4.
Đầu tiên, hãy chọn một thư mục phù hợp:
mkdir web_scraper cd web_scraper python -m venv .venv # Thông thường sử dụng .venv làm tên môi trường thư mục ảo
Môi trường kích hoạt:
# Nguồn Unix/macOS .venv/bin/activate # Windows .\.venv\Scripts\activate
Sau khi kích hoạt, lệnh command sẽ trở thành:
(.venv) $
Bây giờ chúng tôi có thể cài đặt các gói cần thiết cho dự án:
yêu cầu cài đặt pip beautifulsoup4
Điều đáng chú ý là tại thời điểm này, danh sách pip sẽ chỉ hiển thị các gói trong môi trường này, điều này rất mới Tôi:
Phiên bản gói ------------ ------- beautifulsoup4 4.9.3 request 2.26.0 pip 21.3.1 setuptools 58.1.0
Để thuận tiện cho việc chia sẻ và phát triển dự án, chúng tôi nên xuất bản danh sách phụ thuộc:
đóng băng pip > request.txt
Các thành viên khác trong nhóm có thể khôi phục môi trường trực tiếp thông qua tệp này:
cài đặt pip -r require.txt
Hãy viết một chương trình nhỏ để quan sát cách môi trường ảo thay đổi đường dẫn tìm kiếm mô-đun của Python:
# check_paths.py import sys import os def print_paths(): print("Pythonexecutable:", sys.executable) print("\nPython path:") cho đường dẫn trong sys.path: print(f" - {path}" ) print("\nBiến môi trường:") print(f" PYTHONPATH: {os.environ.get('PYTHONPATH', 'Không set')}") print(f" VIRTUAL_ENV: {os.environ.get('VIRTUAL_ENV', 'Not set')}") if __name__ == '__main__': print_paths()
Chạy tập lệnh này trước và sau khi kích hoạt môi trường ảo và bạn sẽ nhận thấy những điểm khác biệt chính:
sys.executable
Trỏ tới trình thông dịch Python trong môi trường ảosys.path
Đầu tiên tìm kiếm môi trường ảo gói trang web
VIRTUAL_ENV
các biến môi trường được thiết lậpMôi trường ảo thực hiện cách ly gói bằng cách sửa đổi sys.path. Khi Python nhập một mô-đun, nó sẽ tìm kiếm theo thứ tự sau:
PYTHONPATH
thư mục trong các biến môi trườnggói trang web
Mục lụcTrong môi trường ảo, thứ tự tìm kiếm này được sửa đổi một cách tinh tế để các gói trang web của môi trường ảo được ưu tiên hơn các thư mục của hệ thống.
Hãy xem trình thông dịch Python trong môi trường ảo:
nhập os print(os.path.realpath(sys.executable))
Bạn sẽ thấy rằng đó thực sự là một liên kết tượng trưng trỏ đến trình thông dịch Python trong hệ thống của bạn. Điều này giải thích tại sao môi trường ảo lại nhẹ đến vậy: nó sử dụng lại trình thông dịch Python và thư viện chuẩn của hệ thống, đồng thời chỉ cách ly các gói của bên thứ ba.
Vấn đề phổ biến nhất là không thể tìm thấy các gói đã cài đặt. Thường có hai lý do:
# Kiểm tra môi trường Python hiện tại import sys import site print(f"Python version: {sys.version}") print(f"Python path: {sys.executable}") print(f"site-packages: {site.getsitepackages ( )}")
Giải thích:
PYTHONPATH
Có chứa các đường dẫn xung đột hay khôngLấy VSCode làm ví dụ, cấu hình môi trường ảo một cách chính xác:
Tạo .vscode/settings.json:
{ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python", "python.analysis.extraPaths": [ "${workspaceFolder}/src" ] }
Mặc dù venv là đủ nhưng nó có thể không thuận tiện khi quản lý nhiều dự án. virtualenvwrapper cung cấp các lệnh thân thiện hơn:
# Cài đặt pip install virtualenvwrapper # Cấu hình Unix/macOS (thêm vào .bashrc hoặc .zshrc) xuất WORKON_HOME=$HOME/.virtualenvs xuất PROJECT_HOME=$HOME/projects source /usr/local/bin/virtualenvwrapper.sh
Các lệnh chính:
mkvirtualenv my_project # Tắt môi trường # Tắt môi trường rmvirtualenv my_project # Xóa môi trường
pipenv use Pipfile thay vì require.txt, cung cấp cơ chế khóa phụ thuộc tốt hơn:
# Cài đặt pip install pipenv # Tạo dự án cài đặt pipenv # Cài đặt gói yêu cầu cài đặt pipenv # Nhập môi trường pipenv shell
Ví dụ về tệp Pip:
[[nguồn]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [gói] request = "*" pandas = ">=1.3.0" [dev-packages] pytest = "*" black = "*" [ yêu cầu] python_version = "3.8"
Thơ cung cấp các chức năng quản lý dự án hoàn chỉnh hơn:
#Cài đặt Curl -sSL https://install.python-poetry.org | python3 - #Tạo dự án mới thơ mới my_project #Cài đặt thuộc thơ cài đặt #Thêm phụ thuộc thơ thêm yêu cầu #Kích hoạt vỏ thơ
ví dụ về pyproject.toml:
[tool.poetry] name = "my_project" version = "0.1.0" description = "" tác giả = ["Tên của bạn "] [tool.poetry.dependency] python = "^3.8 " request = "^2.28.0" [tool.poetry.dev-dependency] pytest = "^7.1.0" [build-system] yêu cầu = [" thơ-core>=1.0.0"] build-backend = "poetry.core.masonry.api"
Môi trường ảo vẫn hữu ích khi phát triển với vùng chứa:
TỪ python:3.8-slim WORKDIR /app # Tạo môi trường ảo CHẠY python -m venv /opt/venv # Use môi trường ảo ENV PATH="/opt/venv/bin:$PATH" COPY require.txt . request SAO CHÉP CMD ["python", "app.py"]
Lấy Action GitHub làm ví dụ:
tên: Python CI trên: [đẩy] công việc: build: chạy-on: ubuntu-bước mới nhất: - use: actions/checkout@v2 - tên: Cài đặt Python use: actions/setup-python@v2 với: python-version : '3.8' - tên: Tạo venv run: | python -m venv .venv source .venv/bin/activate - tên: Cài đặt phụ thuộc: | pip install - r request.txt - tên: Chạy thử nghiệm thử nghiệm pytest/
my_project/ ├── .venv/ ├── src/ │ └── my_project/ │ ├── __init__.py │ └── main.py ├── test/ ├── .gitignore ├── pyproject.toml # hoặc yêu cầu cầu.txt └── README.md
Khuyến nghị quản lý môi trường:
.venv
tham gia vào .gitignore
request.txt
hoặc một công cụ quản lý phụ thuộc hiện đại hơnví dụ .gitignore:
# Môi trường Virtual.venv/ venv/ ENV/ # Python __pycache__/ *.py[cod] *$py.class # Phân phối gói dist/ build/ *.egg-info/
biên dịch pip
hoặc thơ.lock
Đảm bảo các phần phụ thuộc có thể tái tạoMôi trường Virtual Python là một công cụ mạnh mẽ không chỉ giải quyết vấn đề quản lý phụ thuộc mà còn cung cấp khả năng cách lý tưởng cho dự án. vẫn giữ nguyên: cung cấp môi trường Python độc lập, có thể kiểm soát và tái tạo cho từng dự án.
Cho dù bạn chọn tùy chọn nào, việc hiểu cách hoạt động của môi trường ảo sẽ giúp bạn xử lý tốt hơn các vấn đề đề quản lý các phần phụ thuộc và viết các dự án Python dễ bảo trì hơn.
bạn Muốn biết thêm về môi trường Virtual Python: phân tích nguyên tắc và các phương pháp hay nhất, vui lòng tìm kiếm các bài viết CFSDN hoặc Tiếp tục duyệt các bài viết liên quan. Sẽ hỗ trợ blog của tôi trong tương lai!
Tôi gặp sự cố khi sử dụng AJAX để phân tích mảng JSON từ dịch vụ web mà tôi đang tạo. Giao diện người dùng của tôi là sự kết hợp ajax và jquery đơn giản hiển thị kết quả được trả về từ dịch vụ web mà tôi đang tạo. Mặc dù tôi biết việc kiểm tra cơ sở dữ liệu của mình
Thật khó để nói những gì để hỏi ở đây. không thể trả lời hợp lý ở dạng hiện tại. truy cập trợ giúp trung tâm Đóng 1.
Tôi đang gặp sự cố khi chạy ứng dụng Android và gặp lỗi sau java.lang.NoClassDefFoundError: com.parse.Parse khi tôi cố chạy ứng dụng. Câu trả lời hay nhất là đây
Có cách nào để ngăn etree phân tích cú pháp các thực thể HTML trong khi phân tích nội dung HTML không? html = etree.HTML('&') html.find('.//body').text cái này mang lại cho tôi '&' nhưng tôi muốn
Tôi có một ví dụ hơi điên rồ, nhưng có vẻ như đây là một bài tập hay dành cho các chuyên gia xác định phạm vi hàm JavaScript: (function (global) { // our module number one
đóng cửa. Câu hỏi này yêu cầu chi tiết hoặc rõ ràng. Câu trả lời không được chấp nhận vào thời điểm này. Bạn muốn cải thiện câu hỏi này? Thêm chi tiết và làm rõ câu hỏi bằng cách chỉnh sửa bài đăng này Đã đóng 8 năm trước. Cải thiện điều đó
Tôi cần viết một tập lệnh lấy liên kết và phân tích HTML của trang được liên kết để trích xuất tiêu đề và một số dữ liệu khác, chẳng hạn như có thể là một mô tả ngắn, như nội dung bạn liên kết đến trên Facebook. Nó được gọi khi người dùng thêm liên kết vào trang web, vì vậy nó được khởi chạy ở phía máy khách
Thay vào đó, khi phát triển cục bộ trong Mã VS, gói sẽ phân giải thành C:/Users//AppData/Local/Microsoft/TypeScript/3.5/node_modules/@types//index
Tôi gặp vấn đề khi phân tích cú pháp json từ php sang javascript, đây là mã mẫu của tôi: //function MethodAjax = function (wsFile, param) {
Tôi gặp vấn đề khi phân tích cú pháp json từ php sang javascript, đây là mã mẫu của tôi: //function MethodAjax = function (wsFile, param) {
Tôi được giao công việc "dịch" ngôn ngữ này sang ngôn ngữ khác. Mã nguồn quá linh hoạt (phức tạp) đối với cách tiếp cận từng dòng đơn giản bằng cách sử dụng các biểu thức thông thường. Tôi có thể tìm hiểu thêm về phân tích từ vựng và trình phân tích cú pháp ở đâu? Câu trả lời hay nhất Nếu bạn muốn "xúc động" về chủ đề này
Xin chào, tôi gặp sự cố khi phân tích văn bản này { { {[system1];1;1;0.612509325}; {[system2];1;
Tôi đang viết một số mã bằng phần mở rộng cho adobe after effect mà cuối cùng lại là javascript. Tôi có một mảng và tôi chỉ muốn tìm kiếm từ "lắp ráp" và trả về toàn bộ jc3_
Tôi có mã này: $(document).ready(function() { // }); Vấn đề: Mã bên ngoài khối FB_RequireFeatures được thực thi trước mã bên trong nó. do đó ai
Thông tin cơ bản: Một số dịch vụ trong dự án netcore giao tiếp thông qua phần mềm trung gian, chẳng hạn như các thành phần orleans. Trong đó, dịch vụ và máy khách sẽ chỉ định cổng và cổng. Chúng ta chỉ cần mở máy khách ra thế giới bên ngoài và đóng cổng trên máy chủ. Nó tương đương với việc loại bỏ máy chủ, giúp tiết kiệm một số tiền.
1. Đầu tiên dán mã mà tôi đã kiểm tra thành công và sao chép mã như sau: protected void onMeasure(int widthMeasureSpec, int HeightMeasureSpec)
XML là gì? XML đề cập đến Ngôn ngữ đánh dấu eXtensible (Ngôn ngữ đánh dấu eXtensible), một tập hợp con của ngôn ngữ đánh dấu phổ quát tiêu chuẩn. Đây là ngôn ngữ đánh dấu được sử dụng để đánh dấu các tài liệu điện tử nhằm biến chúng thành cấu trúc. Bạn có thể học X thông qua trang web này
[Mã PHP] Sao chép mã như sau: $stmt = mssql_init('P__Global_Test', $conn) hoặc die("initialize sto
Chỉ cần thực thi đoạn mã sau trong Trình phân tích truy vấn SQL. Sao chép mã như sau: khai báo @t varchar(255),@c varchar(255) khai báo table_cursor curs
Lời nói đầu: Gần đây tôi đã thực hành một số câu hỏi về thuật toán front-end. Các câu hỏi sau đây đều là phương pháp viết cá nhân và không phải là câu trả lời chuẩn. Nếu có sai sót, vui lòng chỉ ra. câu hỏi nào đó cũng có thể post vào phần bình luận. Ý kiến, học hỏi lẫn nhau Câu 1: Trong mảng hai chiều.
Tôi là một lập trình viên xuất sắc, rất xuất sắc!