Lỗi không tìm thấy mô-đun dòng lệnh python

Cài đặt PowerShell mới nhất để có các tính năng và cải tiến mới. Di chuyển từ Windows PowerShell 5. 1 đến PowerShell 7 - PowerShell. Tìm hiểu Microsoft

PS C. \GitHub3\CANhandler\CANhandler> & C. /Users/LeighBoyd/AppData/Local/Programs/Python/Python310/python. exe c. /GitHub3/CANhandler/CANhandler/chính. py
Truy nguyên (lần gọi gần đây nhất).
Tệp “c. \GitHub3\CANhandler\CANhandler\main. py”, dòng 4, trong
nhập có thể
ModuleNotFoundError. Không có mô-đun nào có tên là 'có thể'

câu hỏi

  1. Tôi có nên chạy cái này từ vùng chứa Phát triển không? . tập tin exe được đặt trên C. /người dùng/… tôi. e. trong Windows. điều này không thể đúng
  2. Tôi có nên thực hiện “chạy mà không cần gỡ lỗi” để thực hiện điều này thay vì “Chạy tệp Python” phía trên bên phải không
  3. có một ví dụ C tương đương?

Cảm ơn

Xin chào @leighjboyd,

khi tôi nhấp vào "chạy tệp python"

Đợi đã, bạn nói rằng bạn đang chạy

>>> __name__
'__main__'
05. Như trong lệnh Visual Studio Code này?

Lỗi không tìm thấy mô-đun dòng lệnh python

hình ảnh892×86 3. 75 KB

Nếu vậy thì về cơ bản, bạn chỉ yêu cầu Visual Studio Code thực thi tệp Python này trên máy của bạn. Mà có lẽ giải thích hầu hết các lỗi của bạn. Xin lưu ý rằng

>>> __name__
'__main__'
06 ở phía trước lệnh có nghĩa là lệnh này đến từ tiện ích mở rộng Python chứ không phải tiện ích mở rộng Torizon của chúng tôi

Như đã nêu trong ví dụ mà bạn đang tham khảo (Cách sử dụng CAN trên TorizonCore. Trung tâm nhà phát triển Toradex)

Để tải bộ chứa ứng dụng này vào mục tiêu của bạn, mà Tiện ích mở rộng Torizon đã yêu cầu thông tin xác thực của nó trước đó (ví dụ: tên máy chủ/IP, người dùng và mật khẩu), bạn chỉ cần nhấn F5 trên bàn phím của mình

Cố gắng chỉ thực thi các Lệnh Visual Studio được tạo cho tiện ích mở rộng của chúng tôi. Các lệnh như vậy sẽ được chờ đợi trước với một

>>> __name__
'__main__'
07 hoặc một cái gì đó tương tự

có một ví dụ C tương đương?

Chúng tôi chỉ cung cấp ví dụ Python đơn giản này làm tài liệu tham khảo. Sau đó, tùy thuộc vào người dùng để tìm chức năng tương đương trong bất kỳ ngôn ngữ lập trình nào họ muốn sử dụng. Đối với C, tôi tưởng tượng có rất nhiều ví dụ ngoài kia

tên của môi trường cấp cao nhất của chương trình, có thể được kiểm tra bằng cách sử dụng biểu thức

>>> __name__
'__main__'
1;

  • tệp

    >>> __name__
    '__main__'
    
    2 trong các gói Python

  • Cả hai cơ chế này đều liên quan đến các mô-đun Python; . Chúng được giải thích chi tiết dưới đây. Nếu bạn chưa quen với các mô-đun Python, hãy xem phần hướng dẫn Mô-đun để biết phần giới thiệu.

    >>> __name__ '__main__' 1¶

    Khi một mô-đun hoặc gói Python được nhập,

    >>> __name__
    '__main__'
    
    4 được đặt thành tên của mô-đun. Thông thường, đây là tên của chính tệp Python không có phần mở rộng
    >>> __name__
    '__main__'
    
    5

    >>> import configparser
    >>> configparser.__name__
    'configparser'
    

    Nếu tệp là một phần của gói, thì

    >>> __name__
    '__main__'
    
    4 cũng sẽ bao gồm đường dẫn của gói gốc

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    

    Tuy nhiên, nếu mô-đun được thực thi trong môi trường mã cấp cao nhất, thì

    >>> __name__
    '__main__'
    
    4 của nó được đặt thành chuỗi
    >>> __name__
    '__main__'
    
    8

    “Môi trường mã cấp cao nhất” là gì?¶

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    9 là tên của môi trường nơi mã cấp cao nhất được chạy. “Mã cấp cao nhất” là mô-đun Python do người dùng chỉ định đầu tiên bắt đầu chạy. Đó là "cấp cao nhất" vì nó nhập tất cả các mô-đun khác mà chương trình cần. Đôi khi “mã cấp cao nhất” được gọi là điểm vào ứng dụng

    Môi trường mã cấp cao nhất có thể là

    • phạm vi của lời nhắc tương tác

      >>> __name__
      '__main__'
      

    • mô-đun Python được chuyển tới trình thông dịch Python dưới dạng đối số tệp

      >>> __name__
      '__main__'
      
      2

    • mô-đun hoặc gói Python được chuyển tới trình thông dịch Python với đối số

      >>> __name__
      '__main__'
      
      20

      >>> __name__
      '__main__'
      
      4

    • Mã Python được trình thông dịch Python đọc từ đầu vào tiêu chuẩn

      >>> __name__
      '__main__'
      
      5

    • Mã Python được chuyển tới trình thông dịch Python với đối số

      >>> __name__
      '__main__'
      
      21

      >>> __name__
      '__main__'
      
      7

    Trong mỗi tình huống này,

    >>> __name__
    '__main__'
    
    4 của mô-đun cấp cao nhất được đặt thành
    >>> __name__
    '__main__'
    
    8

    Kết quả là, một mô-đun có thể khám phá xem nó có đang chạy trong môi trường cấp cao nhất hay không bằng cách kiểm tra

    >>> __name__
    '__main__'
    
    4 của chính nó, điều này cho phép một thành ngữ chung cho mã thực thi có điều kiện khi mô-đun không được khởi tạo từ câu lệnh nhập

    >>> __name__
    '__main__'
    
    1

    Xem thêm

    Để có cái nhìn chi tiết hơn về cách đặt

    >>> __name__
    '__main__'
    
    4 trong mọi trường hợp, hãy xem phần hướng dẫn Mô-đun .

    Cách sử dụng thành ngữ¶

    Một số mô-đun chứa mã chỉ dành cho mục đích sử dụng tập lệnh, chẳng hạn như phân tích đối số dòng lệnh hoặc tìm nạp dữ liệu từ đầu vào tiêu chuẩn. Nếu một mô-đun như thế này được nhập từ một mô-đun khác, chẳng hạn như để kiểm tra đơn vị nó, mã tập lệnh cũng sẽ vô tình thực thi

    Đây là nơi sử dụng khối mã

    >>> __name__
    '__main__'
    
    26 có ích. Mã trong khối này sẽ không chạy trừ khi mô-đun được thực thi trong môi trường cấp cao nhất

    Đặt càng ít câu lệnh càng tốt vào khối bên dưới

    >>> __name__
    '__main__'
    
    27 có thể cải thiện độ rõ ràng và chính xác của mã. Thông thường, một hàm có tên
    >>> __name__
    '__main__'
    
    28 gói gọn hành vi chính của chương trình

    >>> __name__
    '__main__'
    
    6

    Lưu ý rằng nếu mô-đun không đóng gói mã bên trong hàm

    >>> __name__
    '__main__'
    
    28 mà thay vào đó đặt nó trực tiếp trong khối
    >>> __name__
    '__main__'
    
    26, thì biến
    >>> __name__
    '__main__'
    
    41 sẽ là toàn cục cho toàn bộ mô-đun. Điều này dễ xảy ra lỗi vì các chức năng khác trong mô-đun có thể vô tình sử dụng biến toàn cục thay vì tên cục bộ. Hàm
    >>> __name__
    '__main__'
    
    28 giải quyết vấn đề này

    Sử dụng hàm

    >>> __name__
    '__main__'
    
    28 có thêm lợi ích là bản thân hàm
    >>> __name__
    '__main__'
    
    44 được tách biệt và có thể nhập ở nơi khác. Khi
    >>> __name__
    '__main__'
    
    45 được nhập, các hàm
    >>> __name__
    '__main__'
    
    44 và
    >>> __name__
    '__main__'
    
    28 sẽ được xác định, nhưng cả hai hàm này sẽ không được gọi, bởi vì
    >>> __name__
    '__main__'
    
    48

    Cân nhắc về bao bì¶

    Các hàm

    >>> __name__
    '__main__'
    
    28 thường được sử dụng để tạo các công cụ dòng lệnh bằng cách chỉ định chúng làm điểm nhập cho tập lệnh bảng điều khiển. Khi điều này được thực hiện, pip sẽ chèn lời gọi hàm vào tập lệnh mẫu, trong đó giá trị trả về của
    >>> __name__
    '__main__'
    
    28 được chuyển vào
    >>> __name__
    '__main__'
    
    51. Ví dụ

    >>> __name__
    '__main__'
    
    0

    Vì cuộc gọi đến

    >>> __name__
    '__main__'
    
    28 được bao bọc trong
    >>> __name__
    '__main__'
    
    51, nên kỳ vọng là chức năng của bạn sẽ trả về một số giá trị được chấp nhận làm đầu vào cho
    >>> __name__
    '__main__'
    
    51;

    Bằng cách chủ động tuân theo quy ước này, mô-đun của chúng ta sẽ có hành vi tương tự khi chạy trực tiếp (i. e.

    >>> __name__
    '__main__'
    
    56) như nó sẽ có nếu sau này chúng tôi đóng gói nó dưới dạng điểm nhập tập lệnh bảng điều khiển trong gói có thể cài đặt pip

    Đặc biệt, hãy cẩn thận về việc trả về các chuỗi từ hàm

    >>> __name__
    '__main__'
    
    28 của bạn.
    >>> __name__
    '__main__'
    
    51 sẽ diễn giải một đối số chuỗi dưới dạng thông báo lỗi, vì vậy chương trình của bạn sẽ có mã thoát là
    >>> __name__
    '__main__'
    
    59, biểu thị lỗi và chuỗi sẽ được ghi vào
    >>> __name__
    '__main__'
    
    70. Ví dụ
    >>> __name__
    '__main__'
    
    45 từ trước minh họa bằng cách sử dụng quy ước
    >>> __name__
    '__main__'
    
    72

    Xem thêm

    Hướng dẫn sử dụng gói Python chứa một tập hợp các hướng dẫn và tài liệu tham khảo về cách phân phối và cài đặt các gói Python bằng các công cụ hiện đại

    >>> __name__ '__main__' 2 trong Gói Python¶

    Nếu bạn không quen với các gói Python, hãy xem phần Gói của hướng dẫn. Thông thường nhất, tệp

    >>> __name__
    '__main__'
    
    2 được sử dụng để cung cấp giao diện dòng lệnh cho gói. Hãy xem xét gói giả thuyết sau đây, “bandclass”.

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    0

    >>> __name__
    '__main__'
    
    2 sẽ được thực thi khi chính gói đó được gọi trực tiếp từ dòng lệnh bằng cờ
    >>> __name__
    '__main__'
    
    20. Ví dụ

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    1

    Lệnh này sẽ khiến

    >>> __name__
    '__main__'
    
    2 chạy. Cách bạn sử dụng cơ chế này sẽ phụ thuộc vào bản chất của gói bạn đang viết, nhưng trong trường hợp giả định này, có thể hợp lý nếu cho phép giáo viên tìm kiếm học sinh

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    2

    Lưu ý rằng

    >>> __name__
    '__main__'
    
    78 là một ví dụ về nhập tương đối. Kiểu nhập này có thể được sử dụng khi tham chiếu các mô-đun trong một gói. Để biết thêm chi tiết, hãy xem Tham chiếu bên trong gói trong phần Mô-đun của .

    Cách sử dụng thành ngữ¶

    Nội dung của

    >>> __name__
    '__main__'
    
    2 thường không được rào bằng các khối
    >>> __name__
    '__main__'
    
    26. Thay vào đó, các tệp đó được giữ ngắn gọn, các chức năng để thực thi từ các mô-đun khác. Những mô-đun khác sau đó có thể dễ dàng kiểm tra đơn vị và có thể tái sử dụng đúng cách

    Nếu được sử dụng, khối

    >>> __name__
    '__main__'
    
    26 sẽ vẫn hoạt động như mong đợi đối với tệp
    >>> __name__
    '__main__'
    
    2 trong một gói vì thuộc tính
    >>> __name__
    '__main__'
    
    4 của nó sẽ bao gồm đường dẫn của gói nếu được nhập

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    3

    Điều này sẽ không hoạt động đối với các tệp

    >>> __name__
    '__main__'
    
    2 trong thư mục gốc của một. tập tin zip mặc dù. Do đó, để đảm bảo tính nhất quán, nên ưu tiên sử dụng
    >>> __name__
    '__main__'
    
    2 tối thiểu như
    >>> __name__
    '__main__'
    
    16 được đề cập bên dưới

    Xem thêm

    Xem

    >>> __name__
    '__main__'
    
    16 để biết ví dụ về gói có tối thiểu
    >>> __name__
    '__main__'
    
    2 trong thư viện chuẩn. Nó không chứa khối
    >>> __name__
    '__main__'
    
    26. Bạn có thể gọi nó bằng
    >>> __name__
    '__main__'
    
    60

    Xem

    >>> __name__
    '__main__'
    
    61 để biết thêm chi tiết về cờ
    >>> __name__
    '__main__'
    
    20 cho trình thông dịch thực thi

    Xem

    >>> __name__
    '__main__'
    
    63 để biết cách chạy các ứng dụng được đóng gói dưới dạng. tập tin nén. Trong trường hợp này, Python tìm tệp
    >>> __name__
    '__main__'
    
    2 trong thư mục gốc của kho lưu trữ

    >>> __name__ '__main__' 65¶

    Bất kể chương trình Python được bắt đầu với mô-đun nào, các mô-đun khác đang chạy trong cùng chương trình đó có thể nhập phạm vi của môi trường cấp cao nhất ( không gian tên) by importing the

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    9 module. This doesn’t import a
    >>> __name__
    '__main__'
    
    2 file but rather whichever module that received the special name
    >>> __name__
    '__main__'
    
    8.

    Đây là một mô-đun ví dụ sử dụng không gian tên

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    9

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    4

    Ví dụ sử dụng mô-đun này có thể như sau

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    5

    Bây giờ, nếu chúng ta bắt đầu chương trình của mình, kết quả sẽ như thế này

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    6

    Mã thoát của chương trình sẽ là 1, cho biết có lỗi. Bỏ ghi chú dòng với

    >>> __name__
    '__main__'
    
    00 sẽ sửa chương trình và bây giờ chương trình thoát với mã trạng thái 0, biểu thị thành công

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    7

    Lưu ý rằng việc nhập

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    9 không gây ra bất kỳ sự cố nào với mã cấp cao nhất chạy ngoài ý muốn dành cho việc sử dụng tập lệnh được đặt trong khối
    >>> __name__
    '__main__'
    
    02 của mô-đun
    >>> __name__
    '__main__'
    
    03. Tại sao điều này làm việc?

    Python chèn một mô-đun

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    9 trống vào
    >>> __name__
    '__main__'
    
    05 khi khởi động trình thông dịch và điền vào mô-đun đó bằng cách chạy mã cấp cao nhất. Trong ví dụ của chúng tôi, đây là mô-đun
    >>> __name__
    '__main__'
    
    03 chạy từng dòng và nhập
    >>> __name__
    '__main__'
    
    07. Đổi lại,
    >>> __name__
    '__main__'
    
    07 nhập khẩu
    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    9 (thực ra là
    >>> __name__
    '__main__'
    
    03). Đó là một chu kỳ nhập khẩu. May mắn thay, vì mô-đun
    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    9 được điền một phần có trong
    >>> __name__
    '__main__'
    
    05, nên Python chuyển nó sang
    >>> __name__
    '__main__'
    
    07. Xem Những cân nhắc đặc biệt đối với __main__ trong tài liệu tham khảo của hệ thống nhập để biết chi tiết về cách thức hoạt động của tính năng này.

    REPL của Python là một ví dụ khác về “môi trường cấp cao nhất”, vì vậy mọi thứ được định nghĩa trong REPL đều trở thành một phần của phạm vi

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    9

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    8

    Lưu ý rằng trong trường hợp này, phạm vi

    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    9 không chứa thuộc tính
    >>> from concurrent.futures import process
    >>> process.__name__
    'concurrent.futures.process'
    
    06 vì nó tương tác

    Tại sao Python không thể tìm thấy mô-đun của tôi?

    Điều này là do phiên bản Python mà bạn đang chạy tập lệnh không được định cấu hình để tìm kiếm các mô-đun mà bạn đã cài đặt chúng. This happens when you use the wrong installation of pip to install packages.

    Tại sao Python không hoạt động trong CMD?

    Nhớ lại rằng biến môi trường PATH cho hệ thống của bạn biết thư mục nào cần tìm để định vị các chương trình thực thi. Để có thể chạy Python từ Command Prompt, bạn cần đảm bảo rằng thư mục chứa tệp thực thi Python được liệt kê trong PATH của hệ thống

    Lỗi không tìm thấy mô-đun có nghĩa là gì?

    Lỗi 'không tìm thấy mô-đun' là lỗi cú pháp xuất hiện khi câu lệnh nhập tĩnh không thể tìm thấy tệp tại đường dẫn đã khai báo . Lỗi cú pháp phổ biến này là do sự không nhất quán về cách viết hoa chữ cái có trong (các) tên tệp của bạn giữa kho lưu trữ và máy cục bộ hoặc cả hai.

    Làm cách nào để cài đặt mô-đun trong Python?

    Cài đặt mô-đun bằng pip .
    Đảm bảo mô-đun pip đã được cài đặt. .
    Xác minh việc phát hành pip để đảm bảo nó được cài đặt chính xác. .
    Install the new Python module using the command pip install . .. .
    Để liệt kê tất cả các gói và mô-đun Python đã cài đặt, hãy sử dụng lệnh danh sách pip