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

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ói

Khi chúng tôi sử dụng

import sys
print(sys.path)
4 để cài đặt một gói

pip install 

Các gói đi đến thư mục toàn hệ thống

/home//.local/lib/python3.x/site-packages

“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ừ đâu

Khi sử dụng từ khóa

import sys
print(sys.path)
5 để nhập một gói, Python sẽ lặp lại danh sách đường dẫn trong
import sys
print(sys.path)
6 để tải nó lên

Chạy cái này, để xem danh sách đường dẫn của bạn

import sys
print(sys.path)

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
print(sys.path)
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
import a_package
# or style 2
import a_package as p
# or style 3
from a_package import a_item
# or style 4
from a_package import *
# or style 5
from a_package import a_item as my_item

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 
now_time = datetime.datetime.now()

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
now_time = az_datetime_pkg.datetime.now()

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
now_time = datetime.now()

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
now_time = pkg_datetime_module.now()

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
print(sys.path)
8

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']
0. đây là một mẫu. bên trong mô-đun của bạn

/home//.local/lib/python3.x/site-packages
0

Bằ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
print(sys.path)
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ọi

Nếu đồng nghiệp của bạn đủ bướng bỉnh để khăng khăng sử dụng

import sys
print(sys.path)
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
print(sys.path)
8 của họ

/home//.local/lib/python3.x/site-packages
1

Python 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ập

Khi 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 đích

Giả sử, bạn đã nhập mô-đun toán học

/home//.local/lib/python3.x/site-packages
2

Để xem những chức năng bên trong mô-đun toán học

/home//.local/lib/python3.x/site-packages
3

Bạ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//.local/lib/python3.x/site-packages
4

Bạn sẽ thấy phép toán đã nhập trong danh sách kết quả

/home//.local/lib/python3.x/site-packages
5

Mộ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//.local/lib/python3.x/site-packages
6

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']
5 để kiểm tra, toán học đã biến mất

Tạo Gói Python của riêng bạn

Trong 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//.local/lib/python3.x/site-packages
7

Bên trong thư mục

import os
print(os.getcwd())
1, tạo hai tệp có tên
import os
print(os.getcwd())
2 và
import os
print(os.getcwd())
3

Bên trong tệp

import os
print(os.getcwd())
2, hãy nhập một số mã như thế này, trong tệp
import os
print(os.getcwd())
3, hãy nhập bất kỳ mã nào bạn thích

/home//.local/lib/python3.x/site-packages
8

Bây giờ, trong cùng một thư mục có thư mục

import os
print(os.getcwd())
1, hãy đặt bài kiểm tra của bạn. tập tin py

/home//.local/lib/python3.x/site-packages
9

Trong bài kiểm tra. py, gọi gói nướng mới

import sys
print(sys.path)
0

Bạ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ọi

import sys
print(sys.path)
1

Xin 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
print(sys.path)
2

Để gọi gói, bạn cần bao gồm rõ ràng từ khóa

import os
print(os.getcwd())
8

Mộ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
print(os.getcwd())
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
print(os.getcwd())
9 sẽ được gán cho "__main__". Vì vậy, chúng ta có thể sử dụng
import os
print(os.getcwd())
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.