Mô-đun nhập Python từ gói trang web
$ python sys_modules. py UserDict, __builtin__, __main__, _abcoll, _codecs, _sre, _warnings, _weakref, _weakrefset, abc, codec, copy_reg, mã hóa, mã hóa. __buildin__, mã hóa. bí danh, mã hóa. codec, mã hóa. mã hóa, mã hóa. utf_8, errno, ngoại lệ, đường dẫn chung, linecache, os, os. đường dẫn, posix, posixpath, re, tín hiệu, trang web, sphinxcontrib, sre_compile, sre_constants, sre_parse, stat, chuỗi, strop, sys, textwrap, các loại, cảnh báo, zipimport
Python với tư cách là một trình thông dịch, một chương trình, sẽ không làm được gì nhiều nếu không nhập bất kỳ mô-đun hoặc gói bên ngoài nào. Hiểu cách gói và mô-đun nhập Python sẽ hữu ích trong hầu hết các trường hợp Show
Tất cả mã trong bài viết này được áp dụng và thử nghiệm trong Linux (Ubuntu), Windows và macOS (hy vọng) sẽ giống nhau Điều gì xảy ra khi PIP cài đặt một góiKhi chúng tôi sử dụng import sys 4 để cài đặt một góipip install Các gói đi đến thư mục toàn hệ thống /home/ “Toàn hệ thống” ở đây có nghĩa là tất cả các chương trình Python đều có thể truy cập các gói đã cài đặt Nhập khẩu từ đâuKhi sử dụng từ khóa import sys 5 để nhập một gói, Python sẽ lặp lại danh sách đường dẫn trong import sys 6 để tải nó lênChạy cái này, để xem danh sách đường dẫn của bạn import sys Cái này của tôi ư. Của bạn nên giống nhau ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] Chữ ‘’ trống đầu tiên đại diện cho thư mục hiện tại của bạn sao cho bất kỳ gói nào nằm trong cùng thư mục chứa tập lệnh Python đang chạy đều có thể truy cập được vào thời gian chạy Python (hoặc từ khóa import sys 5)Khi biết điều này, lần tới nếu bạn muốn triển khai gói tùy chỉnh không phải từ pip hoặc chung cư. Thứ gì đó mà bạn đánh cắp/lấy từ Github và muốn làm cho nó có thể truy cập được vào tất cả chương trình Python bất kể vị trí ở đâu. Bạn biết nơi để đặt gói Nhân tiện, để lấy đường dẫn thư mục hiện tại, hãy chạy ________số 8_______Cách tốt nhất để nhập một mô-đun là gìNhư Zen of Python đã nói “Rõ ràng tốt hơn ngầm”. Nếu bạn đặt tên đại loại như i, td,… thì vài tuần sau, ngay cả bạn, tác giả chương trình cũng không hiểu ý nghĩa của các biến này Vì vậy, Quy tắc №1. Hãy rõ ràng Python với tư cách là một ngôn ngữ kịch bản đã tương đối chậm, để làm cho chương trình của bạn nhanh hơn, thực sự cần tải các mô-đun Quy tắc №2. Nhập khẩu chỉ cần thiết Nếu bạn đang làm việc trên một chương trình có thể được gọi từ những người khác, hãy lưu ý về các xung đột đặt tên. Những người khác có thể đặt cùng tên trong chương trình hạ nguồn và có thể được hoan nghênh bởi “Ngoại lệ Lỗi Loại” từ hư không Quy tắc №3. Đặt đúng tên Bạn có thể thấy có nhiều kiểu nhập như danh sách dưới đây, nhưng kiểu nào là tốt nhất và kiểu nào nên tránh? # style 1 Kiểu 1 thì được, nhưng nó sẽ nhập tất cả các mô-đun bên trong gói này và trong trường hợp nhập ngày giờ. Khi bạn muốn lấy thời gian hiện tại, mã sẽ được hình thành như thế này import datetime Lưu ý rằng có hai mốc thời gian, nếu bạn đang đọc một tệp mã dài, bất cứ khi nào bạn thấy ngày giờ, sẽ khiến bạn nghĩ đó là ngày giờ nào, đó là mô-đun hay gói? Kiểu 2 sẽ phần nào giải quyết được vấn đề, bạn có thể đặt tên mới cho datetime, có thể là tên riêng, như thế này import datetime as az_datetime_pkg az_ có nghĩa là, đó là từ Andrew Zhu, _pkg nói rằng đó là một gói được nhập từ đâu đó. Nhưng, gõ tên gói mỗi lần thật tẻ nhạt Kiểu 3 đã giải quyết vấn đề tẻ nhạt, bằng cách làm theo kiểu từ … nhập …, bạn có thể gọi hàm trực tiếp from datetime import datetime nếu bạn muốn cố gắng hết sức để tránh xung đột đặt tên, hãy sử dụng Kiểu 5 from datetime import datetime as pkg_datetime_module Phong cách 4? . vì phong cách 4 phá vỡ cả 3 quy tắc được liệt kê ở trên Nếu bạn đang dự định xây dựng một gói để người khác sử dụng, có một cách để giảm thiểu tai nạn import sys 8sử dụng ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 0. đây là một mẫu. bên trong mô-đun của bạn/home/ 0Bằng cách này, mặc dù người dùng mô-đun gọi gói của bạn bằng import sys 8, nhưng chỉ pub_fun1 và pub_fun2 sẽ được nhập theo ký tự đại diện. pub_fun3 sẽ được giữ kín với người gọiNếu đồng nghiệp của bạn đủ bướng bỉnh để khăng khăng sử dụng import sys 8, bạn có thể thuyết phục họ bằng cách đảo ngược Đúng và Sai bên dưới import sys 8 của họ/home/ 1Python sẽ đảo ngược ý nghĩa của True và False, đó là lý do tại sao chúng ta cần cẩn thận khi đặt tên và nhập mô-đun Kiểm tra một mô-đun đã nhậpKhi bạn nhập một mô-đun, làm thế nào để bạn biết nội bộ của mô-đun? . nó là chức năng ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 4. Hàm tích hợp này trả về danh sách tên lớp đầu tiên của đối tượng đíchGiả sử, bạn đã nhập mô-đun toán học /home/ 2Để xem những chức năng bên trong mô-đun toán học /home/ 3Bạn sẽ thấy danh sách các biến và hàm sẵn sàng để gọi Bây giờ hãy chạy hàm ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 5 không có tham số, để xem những gì được bao gồm trong mô-đun hiện tại/home/ 4Bạn sẽ thấy phép toán đã nhập trong danh sách kết quả /home/ 5Một điều nữa, trong trường hợp bạn muốn xóa mô-đun hiện có, hãy sử dụng ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 6 để xóa nó. Ở đây, hãy loại bỏ ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 7 khỏi chương trình đang chạy hiện tại/home/ 6Sử dụng ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 5 để kiểm tra, toán học đã biến mấtTạo Gói Python của riêng bạnTrong Python, Hàm là nơi chứa các biến và biểu thức; . Gói là một giải pháp để quản lý các Mô-đun Python. Một gói là một thư mục đặc biệt chứa nhiều mô-đun với một tệp ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 9 bổ sungĐây là một cấu trúc gói mẫu. bạn có thể bỏ qua tệp ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 9 nếu sử dụng Python 3. 3+/home/ 7Bên trong thư mục import os 1, tạo hai tệp có tên import os 2 và import os 3Bên trong tệp import os 2, hãy nhập một số mã như thế này, trong tệp import os 3, hãy nhập bất kỳ mã nào bạn thích/home/ 8Bây giờ, trong cùng một thư mục có thư mục import os 1, hãy đặt bài kiểm tra của bạn. tập tin py/home/ 9Trong bài kiểm tra. py, gọi gói nướng mới import sys 0Bạn sẽ nhận được kết quả như thế này, thông báo lỗi ở đây là bình thường, bởi vì trong biến ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/andrewzhu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 0 của bạn, bạn chỉ cho phép hàm pub được gọiimport sys 1Xin lưu ý rằng việc nhập các gói có mã hiển thị bên dưới sẽ không hoạt động. Google sẽ không cho bạn biết nhiều, nhưng lỗi này có thể khiến bạn bối rối một lúc nếu bạn không biết import sys 2Để gọi gói, bạn cần bao gồm rõ ràng từ khóa import os 8Một điều nữa cần đề cập. Mỗi mô-đun/chương trình Python có một biến import os 9 được xác định. nếu mô-đun/chương trình là lối vào thực thi Python, thì import os 9 sẽ được gán cho "__main__". Vì vậy, chúng ta có thể sử dụng import os 9 để phát hiện chương trình được thực thi trực tiếp hoặc đang được nhập từ các chương trình khác. Đặc biệt hữu ích khi thiết kế một gói tùy chỉnh
Làm cách nào để nhập mô-đun Python từ các gói trang web?Có hai cách để python tìm thấy mô-đun của bạn. . thêm đường dẫn nơi mô-đun của bạn nằm trong PYTHONPATH của bạn theo đề xuất của bmat thêm đường dẫn nơi mô-đun của bạn nằm trong tập lệnh của bạn như thế này. nhập sys sys. đường dẫn. chèn (0, '/root/Tải xuống/Python-3. 5. 2/Lib/gói trang web') Làm cách nào để cài đặt các gói trang web bằng Python?Cài đặt gói bằng thiết lập của nó. tập lệnh py . Thiết lập môi trường người dùng của bạn (như được mô tả trong phần trước) Sử dụng tar để giải nén kho lưu trữ (ví dụ: foo-1. 0. 3. gz ); . tar -xzf foo-1. 0. 3. gz. . Thay đổi ( cd ) sang thư mục mới, sau đó, trên dòng lệnh, nhập. thiết lập python. py cài đặt --user Làm cách nào để nhập mô-đun vào Python?Để tạo mô-đun, chỉ cần lưu mã bạn muốn vào một tệp có phần mở rộng tệp. py. . Lưu mã này vào tệp có tên mymodule. py. . Nhập mô-đun có tên mymodule và gọi hàm chào. . Lưu mã này vào tệp mymodule. py. . Nhập mô-đun có tên mymodule và truy cập từ điển person1 Bạn có thể nhập mô-đun bằng Python theo cách thủ công không?Hàm append() . Đây là cách dễ nhất để nhập mô-đun Python bằng cách thêm đường dẫn mô-đun vào biến đường dẫn. Biến đường dẫn chứa các thư mục Trình thông dịch Python tìm kiếm các mô-đun đã được nhập trong tệp nguồn. |