ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ system c: System ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ | Microsoft Docs

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

использованиС пространства ΠΈΠΌΠ΅Π½ System; in Visual Studio 2013

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Console::SetCursorPosition (int, int) . Когда я добавляю строку using namespace System;, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π΅ C++ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ MSDN, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ "Error: name must be a namespace name" . Π― ΠΏΡ€ΠΎΠ±ΡƒΡŽ это ΡƒΠΆΠ΅ ΠΏΠ°Ρ€Ρƒ часов, Π½ΠΎ, ΠΊ соТалСнию, Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Π― наткнулся Π½Π° Ρ‚ΠΎΠ½Π½Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для Visual Studio 2010 ΠΈ 2012 Π³ΠΎΠ΄ΠΎΠ², Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ для 2013 Π³ΠΎΠ΄Π°. Π‘Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΠΉ я ΠΏΡ€ΠΈΡˆΠ΅Π»-это lib-Ρ„Π°ΠΉΠ»Ρ‹ Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° . Π¨Π°Π³ΠΈ 1-3 достаточно просты, Π½ΠΎ Π¨Π°Π³ 4 ΠΌΠ½Π΅ Π½Π΅ ясСн: «Modify the Additional Dependencies property.». Глядя Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ, каТСтся, Ρ‡Ρ‚ΠΎ я ΠΌΠΎΠ³Ρƒ просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» .lib. Но Ρƒ мСня Π½Π΅Ρ‚ System.lib.

Π’Π°ΠΊΠΎΠΉ расстроСнный, Ρ‚Π°ΠΊΠΎΠΉ растСрянный.

Как я ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ систСмноС пространство ΠΈΠΌΠ΅Π½ Π² Visual Studio 2013 Update 4 для C++?

c++

visual-studio-2013

namespaces

using

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ


Evorlor Β  Β 

28 фСвраля 2015 Π² 03:39

3 ΠΎΡ‚Π²Π΅Ρ‚Π°


  • ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ классов пространства ΠΈΠΌΠ΅Π½ Π² visual studio (C#)

    Π― программист Java ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Visual Studio для программирования C#. Π’ Java IDE, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Eclipse, Ссли я Π½Π΅ знаю ΠΈΠΌΠ΅Π½ΠΈ класса Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, я ΠΌΠΎΠ³Ρƒ просто ввСсти Ρ‚ΠΎΡ‡ΠΊΡƒ (.) послС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‚ΠΎΠ³Π΄Π° я ΠΏΠΎΠ»ΡƒΡ‡Ρƒ список всСх классов Π² этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅. Как я ΠΌΠΎΠ³Ρƒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ visual studio, Ρ‡Ρ‚ΠΎΠ±Ρ‹…

  • ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ Visual Studio ΠΎΡ‚ размСщСния Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² using Π²Π½Π΅ пространства ΠΈΠΌΠ΅Π½

    Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² Visual Studio (ΠΈΠ»ΠΈ Resharper), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ пространства ΠΈΠΌΠ΅Π½ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ Π² ΠΊΠ°ΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ? НапримСр, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° MVC Ρ€Π°Π²Π½ΠΎ using System; using System.Collections.Generic; using System.Linq; using System.Web;…



6

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, класс Console ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ пространство ΠΈΠΌΠ΅Π½ System ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° .NET.

Π’ этом контСкстС Π²ΠΊΠ»Π°Π΄ΠΊΠ° «C++», Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² страницу Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ MSDN ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Console::SetCursorPosition(int, int) , фактичСски относится ΠΊ языку C++/CLI . Π―Π·Ρ‹ΠΊ C++/CLI отличаСтся (хотя ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΏΠΎΡ…ΠΎΠΆ) ΠΎΡ‚ языка C++. БоотвСтствСнно, язык C++/CLI содСрТит Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ конструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ инструмСнтов компилятора C++, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΏΡ€ΠΈ компиляции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Win32.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ошибки "Error: name must be a namespace name" , Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Win32 C++ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ CLR. Π‘Π°ΠΌΡ‹ΠΉ простой способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это-ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²Ρ‹Π±Ρ€Π°Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· шаблонов Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Visual C++» / «CLR»:

Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ΠΎΠΌ Π΄Π΅ΠΏΠ΅Π½Π΄Π΅Π½Ρ†ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² .lib (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΡˆΠΈΡ… Lib-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² качСствС Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ссылки ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° ) ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Win32 для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° CLR Π±ΡƒΠ΄ΡƒΡ‚ ссылки assembly. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ добавляСтС эти ссылки assembly с «Add References» Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ свойства ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° «Common Properties , References»:

Однако Π² вашСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС Π²Ρ‹ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ссылка System assembly ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² шаблон ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° CLR.
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ: Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ссылки Π½Π° MSDN для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

НаконСц, Ссли Π²Ρ‹ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ этого Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Win32, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ свойства ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° «Common Language Runtime Support» ΠΏΠΎΠ΄ Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ «General» ΠΈ «C/C++ , ΠžΠ±Ρ‰ΠΈΠ΅» Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· /clr , /clr:pure , /clr:safe ΠΈΠ»ΠΈ /clr:oldSyntax (Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ прилоТСния; Ссли Π²Ρ‹ просто ΠΈΠ³Ρ€Π°Π΅Ρ‚Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с /clr ) для всСх ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° .Net, нСпосрСдствСнно ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π² .vcxproj (ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² этом ΠΎΡ‚Π²Π΅Ρ‚Π΅ )., Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ всС Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ зависимости assembly, ΠΊΠ°ΠΊ ΠΈ Π² случаС с Π½ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Win32). ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π²Ρ‹ΡˆΠ΅.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


SleuthEye Β  Β 

06 ΠΌΠ°Ρ€Ρ‚Π° 2015 Π² 04:07



3

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Common Language Runtime Support (/clr) Π² свойствах ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ-ΠΎΠ±Ρ‰ΠΈΠ΅:

А Π² свойствах ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ-C/C++-ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния:

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Saullo G. P. Castro Β  Β 

05 июня 2017 в 12:58



1

Π£ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Win32 Console Application ΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ пространство ΠΈΠΌΠ΅Π½ .NET . Π’ консольном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Win32 Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ имССтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пространство ΠΈΠΌΠ΅Π½ 4-5, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ std . ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ using namespace std; Π½Π°Π²Π΅Ρ€Ρ…Ρƒ.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


0x6773 Β  Β 

06 ΠΌΠ°Ρ€Ρ‚Π° 2015 Π² 04:12


  • ΠžΡ‚Π»Π°Π΄ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ пространства ΠΈΠΌΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Visual Studio

    Каков Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ пространства ΠΈΠΌΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Visual Studio? НСудобно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ regsvr32 для рСгистрации ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ рСгистрации Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ пСрСзапуска Explorer для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сборки. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ прСимущСством. Π•ΡΡ‚ΡŒ Π»ΠΈ простой способ…

  • Как ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ всСго пространства ΠΈΠΌΠ΅Π½ std Π² Visual C++ 2013?

    Π― Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ всСго пространства ΠΈΠΌΠ΅Π½ std:: C++ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π±Π΅Π· измСнСния ΠΎΠΊΠ½Π° ΠΊΠΎΠ΄Π° Π½Π° std:: code , созданноС Microsoft ΠΊΠ°ΠΊ xstring . Π­Ρ‚ΠΎΡ‚ вопрос ΠΏΠΎΡ…ΠΎΠΆ Π½Π° : Как ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ занятия Π² VS 2008 ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅? ΠΈ автоматичСский пропуск Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ STL Π²ΠΎ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ step-by-step Π²…


ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:

пространства ΠΈΠΌΠ΅Π½: использованиС System & using System.IO

Π˜Ρ‚Π°ΠΊ, моя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ эти 2 строки Π² Π½Π°Ρ‡Π°Π»Π΅ using System; using System.IO; Вопрос: Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Sytem.IO ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств Π² ΠΌΠΎΠΉ ΠΊΠΎΠ΄? ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ…

ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ пространства ΠΈΠΌΠ΅Π½ Π² in visual studio c#

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ пространства ΠΈΠΌΠ΅Π½ Π² visual studio, я имСю Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π° java слово распространСно, Ρ‡Ρ‚ΠΎ (Ссли Π²Ρ‹ прСдоставили ссылку Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π² java…

Visual Studio 2013 ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ ΠΈ Microsoft.VisualBasic.PowerPack

Π£ мСня Π΅ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² Windows Ρ„ΠΎΡ€ΠΌΠ°Ρ… C# ΠΈ VisualΒ StudioΒ 2013 ΠΈΠ· УнивСрситСта (dreamspark). Когда я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ своС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ: Ошибка 2 Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½. ..

ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ классов пространства ΠΈΠΌΠ΅Π½ Π² visual studio (C#)

Π― программист Java ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Visual Studio для программирования C#. Π’ Java IDE, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Eclipse, Ссли я Π½Π΅ знаю ΠΈΠΌΠ΅Π½ΠΈ класса Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, я ΠΌΠΎΠ³Ρƒ просто ввСсти Ρ‚ΠΎΡ‡ΠΊΡƒ (.) послС ΠΈΠΌΠ΅Π½ΠΈ…

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ Visual Studio ΠΎΡ‚ размСщСния Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² using Π²Π½Π΅ пространства ΠΈΠΌΠ΅Π½

Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² Visual Studio (ΠΈΠ»ΠΈ Resharper), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ пространства ΠΈΠΌΠ΅Π½ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ Π² ΠΊΠ°ΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ? НапримСр, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для…

ΠžΡ‚Π»Π°Π΄ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ пространства ΠΈΠΌΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Visual Studio

Каков Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ пространства ΠΈΠΌΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Visual Studio? НСудобно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ regsvr32 для рСгистрации ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ рСгистрации Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ пСрСзапуска Explorer для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ…

Как ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ всСго пространства ΠΈΠΌΠ΅Π½ std Π² Visual C++ 2013?

Π― Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ всСго пространства ΠΈΠΌΠ΅Π½ std:: C++ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π±Π΅Π· измСнСния ΠΎΠΊΠ½Π° ΠΊΠΎΠ΄Π° Π½Π° std:: code , созданноС Microsoft ΠΊΠ°ΠΊ xstring . Π­Ρ‚ΠΎΡ‚ вопрос ΠΏΠΎΡ…ΠΎΠΆ Π½Π° : Как ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅…

Π“Π΄Π΅ находятся пространства ΠΈΠΌΠ΅Π½ Π² visual studio

Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² Visual Studio ΠΈ C#., я ΠΏΡ€ΠΎΡˆΠ΅Π» Ρ‡Π΅Ρ€Π΅Π· ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ пособия ΠΏΠΎ C#, ΠΈ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΡ€ΠΎΡˆΠ΅Π», Π±Ρ‹Π»ΠΈ написаны Π²Π½ΡƒΡ‚Ρ€ΠΈ пространств ΠΈΠΌΠ΅Π½. Но ΠΊΠΎΠ³Π΄Π° я использовал шаблон Π½Π° Visual…

Как быстро Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ пространства ΠΈΠΌΠ΅Π½ Π² Visual Studio 2015

Когда я Π½Π°Π±ΠΈΡ€Π°ΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ пространство ΠΈΠΌΠ΅Π½ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ красноС волнистоС ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ (ΠΎΠ½ ΠΆΠ΅ волнистая красная линия), ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Visual Studio…

Π’ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ ‘Timers’ Π½Π΅ сущСствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «system»

Π― ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° добавляю using System.Timers Π² visual studio 2013 using System.Timers; Ошибка: Π’ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ ‘Timers’ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π² пространствС ΠΈΠΌΠ΅Π½ ‘System’…

НС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ.Net core 2.2 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚? Π’ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ ‘System’ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ

БСйчас я просто ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ новСйшСС ядро ​​. Net.

PS C:\temp> dotnet --version
2.2.301

И я создал Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

PS C:\temp> dotnet new console

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π².NET Core!

Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ.NET Core: https://aka.ms/dotnet-docs Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ «dotnet —help» для просмотра доступных ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ посСтитС страницу: https://aka.ms/dotnet-cli-docs

тСлСмСтрия

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.NET Core ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± использовании, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ваш ΠΎΠΏΡ‹Ρ‚. Π”Π°Π½Π½Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌΠΈ ΠΈ Π½Π΅ содСрТат Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π”Π°Π½Π½Ρ‹Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Microsoft ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ сообщСству. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ, установив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния DOTNET_CLI_TELEMETRY_OPTOUT Π² «1» ΠΈΠ»ΠΈ «true», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π°ΡˆΡƒ Π»ΡŽΠ±ΠΈΠΌΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ.

Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ.NET Core CLI Tools Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ: https://aka.ms/dotnet-cli-telemetry

ASP.NET Core

УспСшно установлСн сСртификат Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ASP.NET Core HTTPS. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ сСртификату, запуститС ‘dotnet dev-certs https —trust’ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Windows ΠΈ macOS). Для установлСния довСрия Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ настройкС HTTPS см. https://go.microsoft.com/fwlink/?linkid=848054. Готовимся… Π¨Π°Π±Π»ΠΎΠ½ «ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅» создан ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° дСйствий послС создания… Запуск ‘dotnet restore’ Π½Π° C:\temp\temp.csproj… ВосстановлСниС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ Π·Π° 190,58 мс для C: \ temp \ temp.csproj.

ВосстановлСниС ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.


Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½ΠΈΠ΅, dotnet run ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ?

PS C: \ temp> dotnet run
C: \ Users \ wangyi \ AppData \ Local \ Temp \ 1 \.NETCoreApp, Version = v2.2.AssemblyAttributes.cs (4,20): ошибка CS0400: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ "БистСма" Π² глобальноС пространство ΠΈΠΌΠ΅Π½ (Π²Π°ΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ссылки Π½Π° сборку?) [C:\temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(10,12): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C: \ Temp\temp. csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(11,12): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C: \ Temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(12,12): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C: \ Temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(13,12): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C: \ Temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(14,12): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C: \ Temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(15,12): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C: \ Temp\temp.csproj]
obj\Debug\netcoreapp2. 2\temp.AssemblyInfo.cs(16,12): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C: \ Temp\temp.csproj]
C:\Users\wangyi\AppData\Local\Temp\1\.NETCoreApp,Version=v2.2.AssemblyAttributes.cs(4,71): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C: \ Temp\temp.csproj]
C:\Users\wangyi\AppData\Local\Temp\1\.NETCoreApp,Version=v2.2.AssemblyAttributes.cs(4,99): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ FrameworkDisplayName (Π΅ΡΡ‚ΡŒ Π²Ρ‹ пропустили Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using ΠΈΠ»ΠΈ ссылку Π½Π° сборку?) [C:\temp\temp.csproj]
C:\Users\wangyi\AppData\Local\Temp\1\.NETCoreApp,Version=v2.2.AssemblyAttributes.cs(4,122): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C: \ Temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(10,55): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C:\temp\temp.csproj]
obj\Debug\netcoreapp2. 2\temp.AssemblyInfo.cs(11,61): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C:\temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(12,59): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C:\temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(13,68): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C:\temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(14,55): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C:\temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(15,53): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C:\temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(16,55): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C:\temp\temp.csproj]
Program.cs(1,7): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C:\temp\temp. csproj]
C:\Users\wangyi\AppData\Local\Temp\1\.NETCoreApp,Version=v2.2.AssemblyAttributes.cs(2,7): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ "БистСма" (Π΅ΡΡ‚ΡŒ Π²Ρ‹ пропустили Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using ΠΈΠ»ΠΈ ссылку Π½Π° сборку?) [C:\temp\temp.csproj]
C:\Users\wangyi\AppData\Local\Temp\1\.NETCoreApp,Version=v2.2.AssemblyAttributes.cs(3,7): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (Π΅ΡΡ‚ΡŒ Π²Ρ‹ пропустили Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using ΠΈΠ»ΠΈ ссылку Π½Π° сборку?) [C:\temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(7,7): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C: \ Temp\temp.csproj]
obj\Debug\netcoreapp2.2\temp.AssemblyInfo.cs(8,7): ошибка CS0246: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ имя пространства ΠΈΠΌΠ΅Π½ 'System' (отсутствуСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?) [C: \ Temp\temp.csproj]
Program.cs(5,11): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.Object' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C:\temp\temp. csproj]
Program.cs(7,26): ошибка CS0518: ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.String' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C:\temp\temp.csproj]
Program.cs(7,16): ошибка CS0518: ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ 'System.Void' Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ [C: \ temp \ temp.csproj]

Π‘Π±ΠΎΡ€ΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ошибки сборки ΠΈ запуститС снова.

Π‘Π΅Π³ dotnet restore Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ошибки.

PS C:\temp> dotnet restore
Restore completed in 41.15 ms for C:\temp\temp.csproj.

Π― попытался «ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ C: \ Program Files \ dotnet \ sdk \ NuGetFallbackFolder» ( https://github.com/dotnet/core/issues/1006), Π½ΠΎ это всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Однако Π² Visual Studio ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ компилируСтся ΠΈ запускаСтся послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ я ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.net core Π½Π° 2.1.

ИмСна ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² языкС Π‘ΠΈ (C). ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° языкС Π‘ΠΈ ΠΈΠΌΠ΅Π½Π° (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ссылок Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ — Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Ρ‚. ΠΏ. ΠŸΡ€ΠΈ соблюдСнии ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ», описанных Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, допускаСтся использованиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° для Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°, компилятор языка Π‘ΠΈ устанавливаСт Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ «ΠΏΡ€ΠΎΡΡ‚ранства ΠΈΠΌΠ΅Π½». Π’ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠΉ ΠΈΠΌΠ΅Π½Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ пространства Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… пространствах ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ для Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ссли ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ пространствам. ΠžΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ вопроса ΠΎ Ρ‚ΠΎΠΌ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ссылаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, компилятор языка Π‘ΠΈ осущСствляСт ΠΏΠΎ контСксту появлСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. НиТС ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π²ΠΈΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° языкС Π‘ΠΈ, ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ пространства ΠΈΠΌΠ΅Π½.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Β 

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, элСмСнты списка пСрСчислСния, typedef

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… этого пространства тСсно связана с понятиСм области дСйствия. Π­Ρ‚ΠΎ выраТаСтся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ пространствС ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Ссли области дСйствия ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹Ρ… ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‚ΡΡ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, совпадСниС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ локальном ΠΏΠ΅Ρ€Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ (см. Ρ€Π°Π·Π΄Π΅Π» 2.4). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сгруппированы Π² ΠΎΠ΄Π½ΠΎΠΌ пространствС с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ любого ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ нСдопустимо, typedef — это объявлСния ΠΈΠΌΠ΅Π½ Ρ‚ΠΈΠΏΠΎΠ² (см. Ρ€Π°Π·Π΄Π΅Π» 3.8.2).

Π’Π΅Π³ΠΈ

Π’Π΅Π³ΠΈ всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… пСрСчислимого Ρ‚ΠΈΠΏΠ°, структур ΠΈ объСдинСний (см. Ρ€Π°Π·Π΄Π΅Π»Ρ‹ 3.4.2-3.4.4.html3.4.4) сгруппированы Π² ΠΎΠ΄Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Π΅Π³ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ пСрСчислимого Ρ‚ΠΈΠΏΠ°, структуры ΠΈΠ»ΠΈ объСдинСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π΅Π³ΠΎΠ² с Ρ‚ΠΎΠΉ ΠΆΠ΅ самой ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия. Ни с ΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈΠΌΠ΅Π½Π° Ρ‚Π΅Π³ΠΎΠ² Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ структур ΠΈ объСдинСний

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ структуры ΠΈΠ»ΠΈ объСдинСния ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ своС пространство ΠΈΠΌΠ΅Π½, поэтому имя ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ структуры ΠΈΠ»ΠΈ объСдинСния, Π½ΠΎ Π½Π΅ обязано ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠΌΠ΅Π½Π° элСмСнтов Π΄Ρ€ΡƒΠ³ΠΈΡ… структур ΠΈ объСдинСний.

ΠœΠ΅Ρ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

ΠœΠ΅Ρ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½. КаТдая ΠΌΠ΅Ρ‚ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Π° ΠΎΡ‚ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ Ρ€Π°Π·Π½Ρ‹Ρ… функциях ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ :

struct student
{
char student[20]; /* массив ΠΈΠ· 20 элСмСнтов Ρ‚ΠΈΠΏΠ° char*/
int class;
int id;
} student; /*структура ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов*/

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ имя Ρ‚Π΅Π³Π° структуры, элСмСнта структуры ΠΈ самой структуры относится ΠΊ Ρ‚Ρ€Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ пространствам ΠΈΠΌΠ΅Π½, поэтому Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ противорСчия ΠΌΠ΅ΠΆΠ΄Ρƒ трСмя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ student. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ языка Π‘ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ ΠΏΠΎ контСксту использования, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ссылаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС. НапримСр, ΠΊΠΎΠ³Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ student появится послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова struct, это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ имСнуСтся Ρ‚Π΅Π³ структуры. Когда ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ student появится послС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Π±ΠΎΡ€Π° элСмСнта (-> ΠΈΠ»ΠΈ . ), Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ имСнуСтся элСмСнт структуры. Π’ любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ контСкстС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ student Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ссылка Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ структурного Ρ‚ΠΈΠΏΠ°.

РСшСниС: Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «ComponentModel» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System»

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток!
ΠŸΡ€ΠΎΡˆΡƒ прощСния,Ссли такая Ρ‚Π΅ΠΌΠ° ΡƒΠΆΠ΅ сущСствуСт,Π½ΠΎ ΠΊ соТалСнию ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° свой вопрос Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π½Π°ΡˆΡ‘Π».
БобствСнно я Π½ΡƒΠ± Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Π‘# (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° Π‘/Π‘++).Π—Π°Π΄Π°Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΊΡƒ,я,ΠΊΠ°ΠΊ настоящий студСнт,Ρ€Π΅ΡˆΠΈΠ» «ΠΏΠΎΠ·Π°ΠΈΠΌΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ» Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ….ΠΠ°ΡˆΡ‘Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΊΡƒ Π½Π° Π‘#. РСшил ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ‚ΡŒ,Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ скачал Microsoft Visual Studio 10.0 (Ρ‚ΠΎΡ‚ Ρ‡Ρ‚ΠΎ экспрСсс) ,Π΄ΠΎΠ±Π°Π²ΠΈΠ» 2 Ρ„Π°ΠΉΠ»Π°(моя ΠΏΡ€ΠΎΠ³Π° состоит ΠΈΠ· 2-ΡƒΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² .cs (ΠΎΠ΄ΠΈΠ½ main.cs ΠΈ Form1.cs ))Π½Π°ΠΆΠ°Π» F5 ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π΅Π»ΠΈ ошибки…

Ошибка 1 Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «ComponentModel» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ссылка Π½Π° сборку?)
Ошибка 2 Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «ComponentModel» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ссылка Π½Π° сборку?)
Ошибка 3 Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «Data» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ссылка Π½Π° сборку?)
Ошибка 4 Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «Data» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ссылка Π½Π° сборку?)
Ошибка 5 Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «Drawing» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ссылка Π½Π° сборку?)
Ошибка 6 Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «Drawing» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ссылка Π½Π° сборку?)
Ошибка 7 Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «Windows» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ссылка Π½Π° сборку?)
Ошибка 8 Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «Windows» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ссылка Π½Π° сборку?)
Ошибка 9 НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «Form» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?)
Ошибка 10 НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «DialogHelp» (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΠ»ΠΈ ссылка Π½Π° сборку?)

БобствСнно ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹?
Π—Π°Ρ€Π°Π½Π΅Π΅ спасибо.

Код ΠΊ Π·Π°Π΄Π°Ρ‡Π΅: «Имя Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ «ComponentModel» отсутствуСт Π² пространствС ΠΈΠΌΠ΅Π½ «System»Β»

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ НС НайдСт ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ИмСн ‘System.Windows.Interop’

Π‘ΠΏΡ€Π°Π²ΠΊΠ° !! ** ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ пространство ΠΈΠΌΠ΅Π½ ** «System.Windows.Interop» ****

Π½Π΅Π΄Π°Π²Π½ΠΎ я построил ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ winform ΠΈ Ρ…ΠΎΡ‡Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ dll (Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° d3d), ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠΌ c++ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ;

OS: win7 x64
IDE: vs2013
Language:C#
current framework used in the winform project is ".net framework 4.5"

И Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ winform я создал Ρ„Π°ΠΉΠ» класса с ΠΈΠΌΠ΅Π½Π΅ΠΌ MCDllOpt.cs. Код выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Interop; // Error occured here!

namespace WorldEditor
{
class MCDllOpt
{

}
}

И Π²ΠΎΡ‚ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ компилятор.

1>CoreCompile:
1> C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /platform:anycpu32bitpreferred /errorreport:prompt /warn:4 /define:TRACE /errorendlocation /preferreduilang:en-US /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Deployment.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.5.1\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Drawing.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Windows.Forms.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Xml.Linq.dll" /debug:pdbonly /filealign:512 /optimize+ /out:obj\Release\WorldEditor.exe /subsystemversion:6.00 /resource:obj\Release\WorldEditor.Form1.resources /resource:obj\Release\WorldEditor.Properties.Resources.resources /target:winexe /utf8output Form1.cs Form1.Designer.cs MCDllOpt.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs "C:\Users\Think\AppData\Local\Temp\.NETFramework,Version=v4.5.1.AssemblyAttributes.cs" obj\Release\\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3. cs obj\Release\\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs obj\Release\\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
1>F:\WorldEditor\WorldEditor\WorldEditor\MCDllOpt.cs(6,22,6,29): error CS0234: The type or namespace name 'Interop' does not exist in the namespace 'System.Windows' (are you missing an assembly reference?)
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.78
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

ПослС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠ½ΡƒΡ‚ поиска. Π― ΡƒΠ·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ссылки. Но послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ я добавлю всС ссылки, прСфикс ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… «System.Windows», ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° всС Π΅Ρ‰Π΅ Π½Π΅ исправлСна!

Π£ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅ΡΡ‚ΡŒ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π°Π½ΡŒΡˆΠ΅? ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ ΠΌΠ½Π΅.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ won’ t находят пространство ΠΈΠΌΠ΅Π½ ‘ БистСма. Windows. Interop’

ΠŸΠΎΠΌΠΎΡ‰ΡŒ!! ** ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ пространство ΠΈΠΌΠ΅Π½ ** ‘БистСма. Windows. Interop’ ****

Π½Π΅Π΄Π°Π²Π½ΠΎ я Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ winform, ΠΈ хотят ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ dll (сдСлайтС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ прСдоставлСния d3d), ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ C++;

OS: win7 x64
IDE: vs2013
Language:C#
current framework used in the winform project is ".net framework 4.5"

И Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ winform, я создал Ρ„Π°ΠΉΠ» класса ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ MCDllOpt.cs
КодСкс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Interop;//Error occured here!

namespace WorldEditor
{
    class MCDllOpt
    {

    }
}

И Π²ΠΎΡ‚ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ компилятор.

1>CoreCompile:
1>  C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /platform:anycpu32bitpreferred /errorreport:prompt /warn:4 /define:TRACE /errorendlocation /preferreduilang:en-US /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.5.1\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Deployment.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Drawing.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Windows.Forms.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\. NETFramework\v4.5.1\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Xml.Linq.dll" /debug:pdbonly /filealign:512 /optimize+ /out:obj\Release\WorldEditor.exe /subsystemversion:6.00 /resource:obj\Release\WorldEditor.Form1.resources /resource:obj\Release\WorldEditor.Properties.Resources.resources /target:winexe /utf8output Form1.cs Form1.Designer.cs MCDllOpt.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs "C:\Users\Think\AppData\Local\Temp\.NETFramework,Version=v4.5.1.AssemblyAttributes.cs" obj\Release\\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs obj\Release\\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs obj\Release\\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
1>F:\WorldEditor\WorldEditor\WorldEditor\MCDllOpt.cs(6,22,6,29): error CS0234: The type or namespace name 'Interop' does not exist in the namespace 'System. Windows' (are you missing an assembly reference?)
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.78
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

After several minutes’ searching.I found out that I need to add references specified.
But after I add all the references whose prefix is ‘System.Windows’,the problem’s still not fixed!

Π£ ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΅ΡΡ‚ΡŒ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€Π΅ΠΆΠ΄Π΅?Please help me.

ИспользованиС пространства ΠΈΠΌΠ΅Π½ | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C ΠΈ C++

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пространства с глобальной ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ систСмС, Ρ‚ΠΎ имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ возникновСния ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΈΠΌΠ΅Π½. Π­Ρ‚ΠΎ становится особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈ использо­вании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ нСзависимыми производитСлями. ИспользованиС
namespace позволяСт Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ глобальноС пространство ΠΈΠΌΠ΅Π½ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΏΡ€ΠΎΒ­Π±Π»Π΅ΠΌΡƒ. По сущСству, namespace опрСдСляСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости. ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° namespace прСдставлСна Π½ΠΈΠΆΠ΅:

namespace имя {
// объявлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
}

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСзымянноС пространство ΠΈΠΌΠ΅Π½, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

namespace {
// объявлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
}

БСзымянноС пространство ΠΈΠΌΠ΅Π½ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ видимости Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… СдинствСнного Ρ„Π°ΠΉΠ»Π°.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования namespace:

namespace MyNameSpace {
int i, k;
void myfunc(int j) { cout << j; }
}

Π—Π΄Π΅ΡΡŒ i, k ΠΈ myfunc() ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости пространства ΠΈΠΌΠ΅Π½ MyNameSpace.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пространство ΠΈΠΌΠ΅Π½ опрСдСляСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Ρ‚ΠΎ для ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΎΠΏΡ€Π΅Β­Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² пространствС ΠΈΠΌΠ΅Π½, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ области видимости. Напри­мСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΒ­Ρ†ΠΈΡŽ:

MyNameSpace::i =10;

Если элСмСнты области пространства ΠΈΠΌΠ΅Π½ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ часто, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using для упрощСния доступа ΠΊ Π½ΠΈΠΌ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ using ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ записи:

using namespace имя;

using имя::Ρ‡Π»Π΅Π½;

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ имя опрСдСляСт имя пространства ΠΈΠΌΠ΅Π½, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ. ВсС Ρ‡Π»Π΅Π½Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π±Π΅Π· использо­вания ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° области видимости. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ пространства ΠΈΠΌΠ΅Π½ становятся Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ. НапримСр, для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ пространства ΠΈΠΌΠ΅Π½ MyNameSpace ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ использованиС инструкции using являСтся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ:

using MyNameSpace::k; // Π²ΠΈΠ΄ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ k
k = 10; // допустимо, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ k Π²ΠΈΠ΄ΠΈΠΌ
using namespace MyNameSpace; // всС Ρ‡Π»Π΅Π½Ρ‹ MyNameSpace Π²ΠΈΠ΄ΠΈΠΌΡ‹
i = 10; // допустимо, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС Ρ‡Π»Π΅Π½Ρ‹ MyNameSpace Π²ΠΈΠ΄ΠΈΠΌΡ‹

c ++ — «БистСма» Π½Π΅ являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ пространства ΠΈΠΌΠ΅Π½

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½ .Net Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π½Π° C ++. ΠžΡ‚ΡΡŽΠ΄Π° я понял, ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π’ ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅:

  #include 
using пространство ΠΈΠΌΠ΅Π½ System;
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ пространство ΠΈΠΌΠ΅Π½ System :: Data;
с использованиСм пространства ΠΈΠΌΠ΅Π½ System :: Data :: Sql;
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ пространство ΠΈΠΌΠ΅Π½ Microsoft :: Sqlserver :: Server;
с использованиСм пространства ΠΈΠΌΠ΅Π½ System :: Data :: SqlTypes;

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ пространство ΠΈΠΌΠ΅Π½ std;

int main ()
{


    cout << "Hello World!" << endl;
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;
}
  

Если я запустил Π΅Π³ΠΎ, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ошибки:

  0:08:06: Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ шагов для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Test. ..
10:08:06: ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π½Π΅ измСнилась, шаг qmake ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½.
10:08:06: Запуск: "/ usr / bin / make"
g ++ -c -m64 -pipe -g -Wall -W -DQT_WEBKIT -I / usr / share / qt4 / mkspecs / linux-g ++ - 64 -I ../ Test -I ../ Test -I. -o main.o ../Test/main.cpp
../Test/main.cpp:2:17: error: "БистСма" Π½Π΅ являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ-пространством ΠΈΠΌΠ΅Π½
../Test/main.cpp:2:23: error: ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ имя-пространства ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄ ';' ΠΆΠ΅Ρ‚ΠΎΠ½
../Test/main.cpp:3:17: error: «БистСма» Π½Π΅ объявлСна
../Test/main.cpp:3:25: error: Β«Π”Π°Π½Π½Ρ‹Π΅Β» Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ пространства ΠΈΠΌΠ΅Π½
../Test/main.cpp:3:29: error: ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ имя-пространства ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄ ';' ΠΆΠ΅Ρ‚ΠΎΠ½
../Test/main.cpp:4:17: error: 'БистСма' Π½Π΅ Π±Ρ‹Π»Π° объявлСна
../Test/main.cpp:4:31: ошибка: 'Sql' Π½Π΅ являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ-пространством ΠΈΠΌΠ΅Π½
../Test/main.cpp:4:34: error: ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ имя-пространства ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄ ';' ΠΆΠ΅Ρ‚ΠΎΠ½
../Test/main.cpp:5:17: ошибка: «Microsoft» нС объявлСно
../Test/main.cpp:5:39: ошибка: Β«Π‘Π΅Ρ€Π²Π΅Ρ€Β» Π½Π΅ являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ-пространством ΠΈΠΌΠ΅Π½
../Test/main.cpp:5:45: error: ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ имя-пространства ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄ ';' ΠΆΠ΅Ρ‚ΠΎΠ½
. ./Test/main.cpp:6:17: error: 'БистСма' Π½Π΅ Π±Ρ‹Π»Π° объявлСна
../Test/main.cpp:6:31: ошибка: 'SqlTypes' Π½Π΅ являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ пространства ΠΈΠΌΠ΅Π½
../Test/main.cpp:6:39: error: ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ имя-пространства ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄ ';' ΠΆΠ΅Ρ‚ΠΎΠ½
make: *** [main.o] Ошибка 1
10:08:06: ΠŸΡ€ΠΎΡ†Π΅ΡΡ "/ usr / bin / make" Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ с ΠΊΠΎΠ΄ΠΎΠΌ 2.
Ошибка ΠΏΡ€ΠΈ создании / Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Test (ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚: Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол)
ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ шага Make
10:08:06: ΠŸΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π΅ врСмя: 00:00.
  

Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ?
ΠšΡΡ‚Π°Ρ‚ΠΈ, я Ρ‡ΠΈΡ‚Π°Π» этот ΠΈ этот посты, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ с / clr Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ cpp?

пространств ΠΈΠΌΠ΅Π½ (7) - страница руководства Linux

пространства ΠΈΠΌΠ΅Π½ (7) - страница руководства Linux


NAMESPACES (7) Руководство программиста Linux NAMESPACES (7)
 

ΠΠΠ—Π’ΠΠΠ˜Π• свСрху

       namespaces - ΠΎΠ±Π·ΠΎΡ€ пространств ΠΈΠΌΠ΅Π½ Linux
 

ΠžΠŸΠ˜Π‘ΠΠΠ˜Π• Π²Π²Π΅Ρ€Ρ…Ρƒ

       ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ ΠΎΠ±Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ систСмный рСсурс Π² Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ, которая
       заставляСт процСссы Π² пространствС ΠΈΠΌΠ΅Π½ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ
       ΠΈΠΌΠ΅ΡŽΡ‚ собствСнный ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ экзСмпляр глобального рСсурса. ИзмСнСния
       ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌΡƒ рСсурсу Π²ΠΈΠ΄Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅
       Ρ‡Π»Π΅Π½Ρ‹ пространства ΠΈΠΌΠ΅Π½, Π½ΠΎ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ для Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов.
       Одно ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ пространств ΠΈΠΌΠ΅Π½ - рСализация ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

       Π­Ρ‚Π° страница содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ…
       Ρ‚ΠΈΠΏΡ‹ пространств ΠΈΠΌΠ΅Π½, описываСт связанныС Ρ„Π°ΠΉΠ»Ρ‹  / proc  ΠΈ
       Ρ€Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΠ΅Ρ‚ API для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с пространствами ΠΈΠΌΠ΅Π½.

     Π’ΠΈΠΏΡ‹ пространств ΠΈΠΌΠ΅Π½ 
       Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚ΠΈΠΏΡ‹ пространств ΠΈΠΌΠ΅Π½, доступныС Π² Linux.Π’Ρ‚ΠΎΡ€ΠΎΠΉ столбСц Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π°.
       для указания Ρ‚ΠΈΠΏΠ° пространства ΠΈΠΌΠ΅Π½ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… API. Π’Ρ€Π΅Ρ‚ΠΈΠΉ столбСц
       ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ страницу руководства, которая прСдоставляСт ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ пространствС ΠΈΠΌΠ΅Π½
       Ρ‚ΠΈΠΏ. ПослСдний столбСц прСдставляСт собой сводку рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅
       ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ пространства ΠΈΠΌΠ΅Π½.

         Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Ρ„Π»Π°Π³Π° пространства ΠΈΠΌΠ΅Π½ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ 
       Cgroup  CLONE_NEWCGROUP cgroup_namespaces  (7) ΠšΠΎΡ€Π΅Π½ΡŒ Cgroup
                                                       ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³
       IPC  CLONE_NEWIPC ipc_namespaces  (7) System V IPC, POSIX
                                                       ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний
       Π‘Π΅Ρ‚ΡŒ  CLONE_NEWNET network_namespaces  (7) Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ устройства,
                                                       стСки, ΠΏΠΎΡ€Ρ‚Ρ‹ ΠΈ Ρ‚.  Π΄.Mount  CLONE_NEWNS mount_namespaces  (7) Π’ΠΎΡ‡ΠΊΠΈ монтирования
       PID  CLONE_NEWPID pid_namespaces  (7) Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ процСсса
       ВрСмя  CLONE_NEWTIME time_namespaces  (7) Загрузочная ΠΈ монотонная
                                                       часы
       ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ  CLONE_NEWUSER user_namespaces  (7) T {Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹
       T}
       UTS  CLONE_NEWUTS uts_namespaces  (7) Имя хоста ΠΈ NIS
                                                       домСнноС имя

     ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ API 
       Помимо Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²  / proc , описанных Π½ΠΈΠΆΠ΅, пространства ΠΈΠΌΠ΅Π½
       API Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹:

       ΠΊΠ»ΠΎΠ½ (2)
              БистСмный Π²Ρ‹Π·ΠΎΠ² clone (2) создаСт Π½ΠΎΠ²Ρ‹ΠΉ процСсс.Если
                flags  Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΈΠ·
                CLONE_NEW *  Ρ„Π»Π°Π³ΠΈ пСрСчислСны Π½ΠΈΠΆΠ΅, Π·Π°Ρ‚Π΅ΠΌ Π½ΠΎΠ²Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½
              создаСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π»Π°Π³Π°, Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс прСвращаСтся Π²
              Ρ‡Π»Π΅Π½ этих пространств ΠΈΠΌΠ΅Π½.  (Π­Ρ‚ΠΎΡ‚ систСмный Π²Ρ‹Π·ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅
              Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ряд Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ связанных с пространствами ΠΈΠΌΠ΅Π½.)

       сСтнс (2)
              БистСмный Π²Ρ‹Π·ΠΎΠ² setns (2) позволяСт Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ процСссу
              ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ пространству ΠΈΠΌΠ΅Π½.ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ для присоСдинСния:
              указываСтся Ρ‡Π΅Ρ€Π΅Π· дСскриптор Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ относится ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ·
                / proc / [pid] / ns  Ρ„Π°ΠΉΠ»ΠΎΠ², описанных Π½ΠΈΠΆΠ΅.

       Π½Π΅ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ (2)
              БистСмный Π²Ρ‹Π·ΠΎΠ² unshare (2) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ процСсс Π²
              Π½ΠΎΠ²ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½. Если  ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚  Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π°
              ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΈΠ· пСрСчислСнных Ρ„Π»Π°Π³ΠΎΠ²  CLONE_NEW * 
              Π½ΠΈΠΆΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π»Π°Π³Π° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½, ΠΈ
              Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ процСсс становится Ρ‡Π»Π΅Π½ΠΎΠΌ этих пространств ΠΈΠΌΠ΅Π½.(Π­Ρ‚ΠΎΡ‚ систСмный Π²Ρ‹Π·ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ряд Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
              Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ пространствам ΠΈΠΌΠ΅Π½.)

       ioctl (2)
              Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ioctl (2) ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для обнаруТСния
              информация ΠΎ пространствах ΠΈΠΌΠ΅Π½.  Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
              описан в ioctl_ns (2).

       Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… пространств ΠΈΠΌΠ΅Π½ с использованиСм clone (2) ΠΈ unshare (2) Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅
       случаях трСбуСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ  CAP_SYS_ADMIN , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½ΠΎΠ²ΠΎΠΌ
       пространство ΠΈΠΌΠ΅Π½, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅
       рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅
       впослСдствии создаСтся Π² пространствС ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ присоСдиняСтся ΠΊ Π½Π΅ΠΌΡƒ.ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ пространства ΠΈΠΌΡ‘Π½
       ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ: начиная с Linux 3.8, для
       ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

     ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ / proc / [pid] / ns / 
       Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСсса Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³  / proc / [pid] / ns / , содСрТащий ΠΎΠ΄ΠΈΠ½
       запись для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
       setns (2):

           $  ls -l / proc / $$ / ns | awk '{print $ 1, 9, 10, 11 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ²}' 
           всСго 0
           lrwxrwxrwx. cgroup -> cgroup: [4026531835]
           lrwxrwxrwx.ipc -> ipc: [4026531839]
           lrwxrwxrwx.  mnt -> mnt: [4026531840]
           lrwxrwxrwx. ΡΠ΅Ρ‚ΡŒ -> ΡΠ΅Ρ‚ΡŒ: [4026531969]
           lrwxrwxrwx. pid -> pid: [4026531836]
           lrwxrwxrwx. pid_for_children -> pid: [4026531834]
           lrwxrwxrwx. врСмя -> врСмя: [4026531834]
           lrwxrwxrwx. time_for_children -> врСмя: [4026531834]
           lrwxrwxrwx. ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ -> ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ: [4026531837]
           lrwxrwxrwx. uts -> uts: [4026531838]

       ΠŸΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (см. Mount (2)) ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅
       Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Ρ…Ρ€Π°Π½ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ
       пространство ΠΈΠΌΠ΅Π½ процСсса, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²  pid , ΠΆΠΈΠ²ΠΎΠ΅, Π΄Π°ΠΆΠ΅ Ссли всС
       процСссы, находящиСся Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² пространствС ΠΈΠΌΠ΅Π½, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ.ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ (ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π°,
       bind, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· этих Ρ„Π°ΠΉΠ»ΠΎΠ²) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСскриптор Ρ„Π°ΠΉΠ»Π° для
       ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ пространство ΠΈΠΌΠ΅Π½ процСсса, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²  pid . Пока
       ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор остаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, пространство ΠΈΠΌΠ΅Π½ останСтся
       ΠΆΠΈΠ²Ρ‹, Π΄Π°ΠΆΠ΅ Ссли всС процСссы Π² пространствС ΠΈΠΌΠ΅Π½ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ.  Π’
       дСскриптор Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π² setns (2).

       Π’ Linux 3.7 ΠΈ Ρ€Π°Π½Π΅Π΅ эти Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ Π²ΠΈΠ΄Π½Ρ‹ ΠΊΠ°ΠΊ ТСсткиС ссылки.
       Начиная с Linux 3.8 ΠΎΠ½ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ символичСскиС ссылки. Если Π΄Π²Π° процСсса
       находятся Π² ΠΎΠ΄Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½, Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ устройств ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° inode
       ΠΈΠ· ΠΈΡ…  / proc / [pid] / ns / xxx  ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ссылок Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅; Π°Π½
       ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ  stat.st_dev  ΠΈ  stat.st_ino 
       поля, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ stat (2). Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ этой символичСской ссылки
       строка, содСрТащая Ρ‚ΠΈΠΏ пространства ΠΈΠΌΠ΅Π½ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ inode, ΠΊΠ°ΠΊ Π²
       ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

           $  readlink / proc / $$ / ns / uts 
           uts: [4026531838]

       Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ссылки Π² этом ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

         / proc / [pid] / ns / cgroup  (начиная с Linux 4.6)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» являСтся дСскриптором пространства ΠΈΠΌΠ΅Π½ cgroup
              процСсс.

         / proc / [pid] / ns / ipc  (начиная с Linux 3. 0)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» являСтся дСскриптором пространства ΠΈΠΌΠ΅Π½ IPC
              процСсс.

         / proc / [pid] / ns / mnt  (начиная с Linux 3.8)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» являСтся дСскриптором пространства ΠΈΠΌΠ΅Π½ монтирования
              процСсс.

         / proc / [pid] / ns / net  (начиная с Linux 3.0)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» прСдставляСт собой дСскриптор сСтСвого пространства ΠΈΠΌΠ΅Π½
              процСсс. / proc / [pid] / ns / pid  (начиная с Linux 3.8)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» являСтся дСскриптором пространства ΠΈΠΌΠ΅Π½ PID
              процСсс. Π­Ρ‚Π° Ρ€ΡƒΡ‡ΠΊΠ° остаСтся постоянной Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго срока слуТбы
              процСсс (Ρ‚.Π΅. члСнство Π² пространствС ΠΈΠΌΠ΅Π½ PID процСсса Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅
              измСнСния).

         / proc / [pid] / ns / pid_for_children  (начиная с Linux 4.12)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» являСтся дСскриптором пространства ΠΈΠΌΠ΅Π½ PID Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ элСмСнта.
              процСссы, созданныС этим процСссом. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ
              слСдствиС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² unshare (2) ΠΈ setns (2) (см. 
              pid_namespaces (7)), поэтому Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚
                / proc / [pid] / ns / pid .Бимвольная ссылка ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
              послС создания ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ процСсса Π² пространствС ΠΈΠΌΠ΅Π½.
              (ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ readlink (2) символичСской ссылки Π²Π΅Ρ€Π½Π΅Ρ‚
              пустой Π±ΡƒΡ„Π΅Ρ€.)

         / proc / [pid] / ns / time  (начиная с Linux 5.6)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» являСтся дСскриптором пространства ΠΈΠΌΠ΅Π½ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
              процСсс.

         / proc / [pid] / ns / time_for_children  (начиная с Linux 5.6)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» являСтся дСскриптором пространства ΠΈΠΌΠ΅Π½ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ элСмСнта
              процСссы, созданныС этим процСссом.Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ
              слСдствиС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² unshare (2) ΠΈ setns (2) (см.
              time_namespaces (7)), поэтому Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚
                / proc / [pid] / нс / врСмя .

         / proc / [pid] / ns / user  (начиная с Linux 3.8)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» прСдставляСт собой дСскриптор ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½
              процСсс. 

         / proc / [pid] / ns / uts  (начиная с Linux 3.0)
              Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» являСтся описатСлСм пространства ΠΈΠΌΠ΅Π½ UTS
              процСсс.

       Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (ссылка для чтСния (2)) этих символичСских
       ссылки Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ доступа ptrace
         PTRACE_MODE_READ_FSCREDS  ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°; см. ptrace (2). ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ / proc / sys / user 
       Π€Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅  / proc / sys / user  (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ присутствуСт с
       Linux 4.9) Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ограничСния Π½Π° количСство пространств ΠΈΠΌΠ΅Π½ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ…
       Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы. Π­Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹:

         max_cgroup_namespaces 
              Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этом Ρ„Π°ΠΉΠ»Π΅ опрСдСляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
              количСство пространств ΠΈΠΌΠ΅Π½ cgroup, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы Π²
              пространство ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

         max_ipc_namespaces 
              Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этом Ρ„Π°ΠΉΠ»Π΅ опрСдСляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
              количСство пространств ΠΈΠΌΠ΅Π½ ipc, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ
              пространство ΠΈΠΌΠ΅Π½.  max_mnt_namespaces 
              Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этом Ρ„Π°ΠΉΠ»Π΅ опрСдСляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
              количСство пространств ΠΈΠΌΠ΅Π½ монтирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ
              пространство ΠΈΠΌΠ΅Π½.

         max_net_namespaces 
              Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этом Ρ„Π°ΠΉΠ»Π΅ опрСдСляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
              количСство сСтСвых пространств ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы Π²
              пространство ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

         max_pid_namespaces 
              Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этом Ρ„Π°ΠΉΠ»Π΅ опрСдСляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
              количСство пространств ΠΈΠΌΠ΅Π½ PID, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅
              пространство ΠΈΠΌΠ΅Π½. max_time_namespaces  (начиная с Linux 5.7)
              Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этом Ρ„Π°ΠΉΠ»Π΅ опрСдСляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
              количСство пространств ΠΈΠΌΠ΅Π½ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅
              пространство ΠΈΠΌΠ΅Π½.

         max_user_namespaces 
              Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этом Ρ„Π°ΠΉΠ»Π΅ опрСдСляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
              количСство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… пространств ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅
              пространство ΠΈΠΌΠ΅Π½. 

         max_uts_namespaces 
              Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² этом Ρ„Π°ΠΉΠ»Π΅ опрСдСляСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
              количСство пространств ΠΈΠΌΠ΅Π½ uts, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ
              пространство ΠΈΠΌΠ΅Π½.ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свСдСния ΠΎΠ± этих Ρ„Π°ΠΉΠ»Π°Ρ…:

       * ЗначСния Π² этих Ρ„Π°ΠΉΠ»Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ
          процСссы.

       * ЗначСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² этих Ρ„Π°ΠΉΠ»Π°Ρ…, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ограничСниями для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
          пространство ΠΈΠΌΠ΅Π½, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится процСсс открытия.

       * ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ пространствС ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
          ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ пространства ΠΈΠΌΠ΅Π½ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°.

       * ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π½Π° всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ UID 0.

       * Π­Ρ‚ΠΈ ограничСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½
          ограничСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для PID ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… пространств ΠΈΠΌΠ΅Π½), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ
          ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. * ΠŸΡ€ΠΈ достиТСнии этих ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ clone (2) ΠΈ unshare (2) тСрпят Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ
          с ошибкой  ENOSPC .

       * Для исходного пространства ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·
          эти Ρ„Π°ΠΉΠ»Ρ‹ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ ограничСния Π½Π° количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅
          ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ( / proc / sys / kernel / threads-max ). Π’ Ρ†Π΅Π»ΠΎΠΌ
          ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… пространств ΠΈΠΌΠ΅Π½, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅
            МАКБИНВ .

       * ΠŸΡ€ΠΈ создании пространства ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ учитываСтся
          ΠΏΡ€ΠΎΡ‚ΠΈΠ² пространств ΠΈΠΌΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ².Π’ΠΎΡ‡Π½Π΅Π΅:

          + Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ Π΅ΡΡ‚ΡŒ UID создатСля.

          + Когда пространство ΠΈΠΌΠ΅Π½ создаСтся, ΠΎΠ½ΠΎ учитываСтся
             UID создатСля Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… пространств ΠΈΠΌΠ΅Π½-ΠΏΡ€Π΅Π΄ΠΊΠΎΠ², ΠΈ
             ядро Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π» пространства ΠΈΠΌΠ΅Π½
             для UID создатСля Π² пространствС ΠΈΠΌΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΊΠ° Π½Π΅
             ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΎ.

          + Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
             пространство ΠΈΠΌΠ΅Π½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ срСдство для Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π²
             ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ пространствС ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.  ВрСмя ΠΆΠΈΠ·Π½ΠΈ пространства ΠΈΠΌΠ΅Π½ 
       ΠŸΡ€ΠΈ отсутствии ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² пространство ΠΈΠΌΠ΅Π½ автоматичСски удаляСтся.
       ΠΊΠΎΠ³Π΄Π° послСдний процСсс Π² пространствС ΠΈΠΌΠ΅Π½ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠΈΠ΄Π°Π΅Ρ‚
       пространство ΠΈΠΌΠ΅Π½. Однако Π΅ΡΡ‚ΡŒ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚
       Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ пространство ΠΈΠΌΠ΅Π½, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π»Π΅Π½Π°
       процСссы. Π­Ρ‚ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

       * ДСскриптор ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ привязка сущСствуСт для
          ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ»  / proc / [pid] / ns / * .* ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ являСтся иСрархичСским (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PID ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½),
          ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π΅ пространство ΠΈΠΌΠ΅Π½.

       * Π­Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ.
          пространства ΠΈΠΌΠ΅Π½.

       * Π­Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ PID, ΠΈ Π΅ΡΡ‚ΡŒ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ относится ΠΊ
          пространство ΠΈΠΌΠ΅Π½ Ρ‡Π΅Ρ€Π΅Π· символичСский  / proc / [pid] / ns / pid_for_children 
          ссылка Π½Π° сайт. 

       * Π­Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ Π΅ΡΡ‚ΡŒ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ относится ΠΊ
          пространство ΠΈΠΌΠ΅Π½ Ρ‡Π΅Ρ€Π΅Π· символичСский  / proc / [pid] / ns / time_for_children 
          ссылка Π½Π° сайт.* Π­Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ IPC ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅  mqueue 
          файловая систСма (см. mq_overview (7)) относится ΠΊ этому пространству ΠΈΠΌΠ΅Π½.

       * Π­Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ PID ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ proc (5)
          файловая систСма относится ΠΊ этому пространству ΠΈΠΌΠ΅Π½.
 

ΠŸΠ Π˜ΠœΠ•Π Π« Π½Π°Π²Π΅Ρ€Ρ…Ρƒ

       Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ clone (2) ΠΈ user_namespaces (7).
 

Π‘ΠœΠžΠ’Π Π˜Π’Π• Π’ΠΠšΠ–Π• top

       nsenter (1), ссылка для чтСния (1), unshare (1), clone (2), ioctl_ns (2),
       setns (2), unshare (2), proc (5), возмоТности (7),
       cgroup_namespaces (7), cgroups (7), ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (7),
       ipc_namespaces (7), network_namespaces (7), pid_namespaces (7),
       user_namespaces (7), uts_namespaces (7), lsns (8), pam_namespace (8),
       switch_root (8)
 

COLOPHON Π²Π΅Ρ€Ρ…

       Π­Ρ‚Π° страница являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ вСрсии 5. 11 ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°  справочных страниц Linux .
       ОписаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, информация ΠΎ сообщСниях ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…,
       ΠΈ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ этой страницы ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ адрСсу
       https://www.kernel.org/doc/man-pages/.


 

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ этой страницС:
nsenter (1),
procps (1),
пс (1),
systemd-ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅-Π²ΠΈΡ€Ρ‚ (1),
Π½Π΅ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ (1),
ΠΊΠ»ΠΎΠ½ (2),
getdomainname (2),
gethostname (2),
ioctl_ns (2),
сСтнс (2),
Π½Π΅ Π΄Π΅Π»ΠΈΡ‚ΡŒ (2),
proc (5),
systemd.exec (5),
cgroup_namespaces (7),
cgroups (7),
ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (7),
ipc_namespaces (7),
mount_namespaces (7),
mq_overview (7),
network_namespaces (7),
pid_namespaces (7),
time_namespaces (7),
user_namespaces (7),
uts_namespaces (7),
lsns (8),
rdma-систСма (8)


АвторскиС ΠΏΡ€Π°Π²Π° ΠΈ лицСнзия Π½Π° это руководство, страница

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ с использованиСм пространств ΠΈΠΌΠ΅Π½: пространство ΠΈΠΌΠ΅Π½ mount

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ рассматриваСт пространство ΠΈΠΌΠ΅Π½ mount ΠΈ являСтся Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Π² сСрии пространств ΠΈΠΌΠ΅Π½ Linux. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я прСдставил сСмь Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… пространств ΠΈΠΌΠ΅Π½, Π·Π°Π»ΠΎΠΆΠΈΠ² основу для практичСской Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½Π°Ρ‡Π°Ρ‚ΠΎΠΉ ​​в ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… пространствах ΠΈΠΌΠ΅Π½. Моя Ρ†Π΅Π»ΡŒ - ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ знания ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Linux. Если вас интСрСсуСт, ΠΊΠ°ΠΊ Linux управляСт рСсурсами Π² систСмС, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с сСриСй статСй ΠΎ CGroup, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я писал Ρ€Π°Π½Π΅Π΅. НадСюсь, ΠΊ Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с пространствами ΠΈΠΌΠ΅Π½, я смогу ΡΠ²ΡΠ·Π°Ρ‚ΡŒ CGroups ΠΈ пространства ΠΈΠΌΠ΅Π½ вмСстС Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ² для вас ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ исслСдуСтся пространство ΠΈΠΌΠ΅Π½ mount ΠΈ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚ΡŒΡΡ ΠΊ пониманию изоляции, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Linux привносят систСмным администраторам ΠΈ, соотвСтствСнно, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ OpenShift ΠΈ Kubernetes.

[Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ: БовмСстноС использованиС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Podman]

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ mount

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ монтирования Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ послС создания Π½ΠΎΠ²ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли Π²Ρ‹ создадитС Π½ΠΎΠ²ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ монтирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ unshare -m , вашС прСдставлСниС ΠΎ систСмС останСтся Π² основном Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создаСтС Π½ΠΎΠ²ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ монтирования, Π² Π½ΠΎΠ²ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½ монтирования создаСтся копия Ρ‚ΠΎΡ‡Π΅ΠΊ монтирования ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ любоС дСйствиС, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ настроСнного пространства ΠΈΠΌΠ΅Π½ монтирования , повлияСт Π½Π° хост .

НСкоторыС шаги настройки для монтирования пространств ΠΈΠΌΠ΅Π½

Π’Π°ΠΊ Π² Ρ‡Π΅ΠΌ ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° смысл пространства ΠΈΠΌΠ΅Π½ mount? Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это, я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ tar-Π°Ρ€Ρ…ΠΈΠ² Alpine Linux.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π΅Π³ΠΎ, распакуйтС ΠΈ пСрСмСститС Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, прСдоставив ΠΏΡ€Π°Π²Π° доступа ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня для Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

  [root @ localhost ~] экспорт CONTAINER_ROOT_FOLDER = / container_practice
[root @ localhost ~] mkdir -p $ {CONTAINER_ROOT_FOLDER} / fakeroot
[root @ localhost ~] cd $ {CONTAINER_ROOT_FOLDER}
[root @ localhost ~] wget https://dl-cdn. alpinelinux.org/alpine/v3.13/releases/x86_64/alpine-minirootfs-3.13.1-x86_64.tar.gz
[ΠΊΠΎΡ€Π΅Π½ΡŒ @ localhost ~] tar xvf alpine-minirootfs-3.13.1-x86_64.tar.gz -C fakeroot
[root @ localhost ~] chown ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. -R $ {CONTAINER_ROOT_FOLDER} / fakeroot  

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ fakeroot Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ послС создания Π½ΠΎΠ²ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ root ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² Π½ΠΎΠ²ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ сопоставлСн с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Π²Π½Π΅ пространства ΠΈΠΌΠ΅Π½ . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ процСсс Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ возмоТности, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для измСнСния своих Ρ„Π°ΠΉΠ»ΠΎΠ².Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы хоста Π½Π΅ позволят ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Alpine ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π° (Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся ΠΊΠΎΡ€Π΅Π½ΡŒ ).

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π²Ρ‹ просто запуститС Π½ΠΎΠ²ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ монтирования?

  PS1 = '\ u @ new-mnt $' unshare -Umr  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² Π½ΠΎΠ²ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½, Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ исходныС Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования с хоста. Однако это Π½Π΅ Ρ‚Π°ΠΊ:

  ΠΊΠΎΡ€Π΅Π½ΡŒ @ new-mnt $ df -h
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ% УстановлСно Π½Π°
/ dev / mapper / cs-root 36 Π“Π‘ 5.2G 31G 15% /
tmpfs 737M 0 737M 0% / sys / fs / cgroup
devtmpfs 720M 0 720M 0% / dev
tmpfs 737M 0 737M 0% / dev / shm
tmpfs 737M 8,6M 728M 2% / запуск
tmpfs 148M 0 148M 0% / run / user / 0
/ dev / vda1 976M 197M 713M 22% / boot


ΠΊΠΎΡ€Π΅Π½ΡŒ @ new-mnt $ ls /
bin container_practice ΠΈ Ρ‚. Π΄. lib media opt root sbin sys usr
boot dev home lib64 mnt proc run srv tmp var  

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ systemd ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ рСкурсивно раздСляСт Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования со всСми Π½ΠΎΠ²Ρ‹ΠΌΠΈ пространствами ΠΈΠΌΠ΅Π½.Если Π²Ρ‹ смонтировали Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму tmpfs Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, / mnt Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ монтирования, смоТСт Π»ΠΈ хост Π΅Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ?

  ΠΊΠΎΡ€Π΅Π½ΡŒ @ Π½ΠΎΠ²Ρ‹ΠΉ-mnt $ mount -t tmpfs tmpfs / mnt

ΠΊΠΎΡ€Π΅Π½ΡŒ @ new-mnt $ findmnt | grep mnt
└─ / mnt tmpfs tmpfs rw, relatime, seclabel, uid = 1000, gid = 1000  

Π₯ост, ΠΎΠ΄Π½Π°ΠΊΠΎ, этого Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚:

  [ΠΊΠΎΡ€Π΅Π½ΡŒ @ localhost ~] # findmnt | grep mnt  

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ mount Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСбольшой ΠΊΡ€ΡŽΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ распространСниС Ρ‚ΠΎΡ‡Π΅ΠΊ монтирования. Π― ΠΊΡ€Π°Ρ‚ΠΊΠΎ Ρ€Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΡŽ, Π½ΠΎ Ссли вас интСрСсуСт Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, взглянитС Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡŽ Майкла ΠšΠ΅Ρ€Ρ€ΠΈΡΠΊΠ° LWN, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° страницу руководства для пространства ΠΈΠΌΠ΅Π½ mount. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ я Π½Π΅ Ρ‚Π°ΠΊ сильно полагаюсь Π½Π° страницы руководства, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ часто ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅Π»Π΅Π³ΠΊΠΎ ΡƒΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ. Однако Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½ΠΈ ΠΏΠΎΠ»Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Π½Π° (Π² основном) простом английском языкС.

ВСория Ρ‚ΠΎΡ‡Π΅ΠΊ крСплСния

ΠœΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ·-Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ядра, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ .Π­Ρ‚ΠΎ позволяСт ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ монтирования ΠΈΠΌΠ΅Ρ‚ΡŒ связанный с Π½Π΅ΠΉ собствСнный Ρ‚ΠΈΠΏ распространСния. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования. На страницС руководства ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ оптичСского диска. Если ваш оптичСский диск автоматичСски смонтирован ΠΏΠΎΠ΄ / cdrom , Π΅Π³ΠΎ содСрТимоС Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… пространствах ΠΈΠΌΠ΅Π½, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли установлСн ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ распространСния.

ΠžΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ состояния монтирования

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ ядру сказано, Ρ‡Ρ‚ΠΎ Β« одноранговая Π³Ρ€ΡƒΠΏΠΏΠ° опрСдСляСтся ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ° vfsmounts, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ события Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ.«Бобытия - это Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ сСтСвого рСсурса ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ оптичСского устройства. ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ, спроситС Π²Ρ‹? Π§Ρ‚ΠΎ ΠΆ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ пространства ΠΈΠΌΠ΅Π½ монтирования, Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² , часто ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅Π½ ΠΈ с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. БостояниС монтирования опрСдСляСт, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Ρ‡Π»Π΅Π½ Π² ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ событиС. Богласно Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ядра, сущСствуСт ΠΏΡΡ‚ΡŒ состояний монтирования:

  1. ΠΎΠ±Ρ‰ΠΈΠΉ - ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅.Π›ΡŽΠ±Ρ‹Π΅ происходящиС измСнСния Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π½Π° всСх Ρ‡Π»Π΅Π½ΠΎΠ² ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹.
  2. slave - ΠžΠ΄Π½ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½Π΅Π΅ распространСниС. Главная Ρ‚ΠΎΡ‡ΠΊΠ° монтирования Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ события Π½Π° Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство, Π½ΠΎ Π²Π΅Π΄ΡƒΡ‰Π΅Π΅ устройство Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий, ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… Π²Π΅Π΄ΠΎΠΌΡ‹ΠΌ устройством.
  3. ΠΎΠ±Ρ‰ΠΈΠΉ ΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉ - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° монтирования ΠΈΠΌΠ΅Π΅Ρ‚ Π³Π»Π°Π²Π½Ρ‹ΠΉ сСрвСр, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ². ΠœΠ°ΡΡ‚Π΅Ρ€ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ ΠΎΠ± измСнСниях Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования, Π½ΠΎ всС Ρ‡Π»Π΅Π½Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ², располоТСнныС Π½ΠΈΠΆΠ΅ ΠΏΠΎ ΠΏΠΎΡ‚ΠΎΠΊΡƒ, Π±ΡƒΠ΄ΡƒΡ‚.
  4. частный - Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈ Π½Π΅ пСрСсылаСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… событий распространСния.
  5. unbindable - НС ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈ Π½Π΅ пСрСсылаСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… событий распространСния, Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ .

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ состояниС Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования - для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Ρƒ вас / ΠΈ / boot , Π²Π°ΠΌ придСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ состояниС ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ монтирования.

Если вас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π΄Π²ΠΈΠΆΠΊΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ частныС состояния монтирования ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚ΠΎΠΌΠ° Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. НС Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ ΠΎΠ± этом сСйчас. Π― просто Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ контСкст. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ сцСнарии монтирования, посмотритС справочныС страницы, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ довольно Ρ…ΠΎΡ€ΠΎΡˆΠΈ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пространства ΠΈΠΌΠ΅Π½ монтирования

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ язык программирования, ΠΊΠ°ΠΊ Go ΠΈΠ»ΠΈ C, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ядра для создания ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ срСды для вашСго Π½ΠΎΠ²ΠΎΠ³ΠΎ пространства (пространств) ΠΈΠΌΠ΅Π½. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π΅Π»ΡŒ этого состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, Π²Π°ΠΌ придСтся ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ»ΠΎΠ²ΠΊΠΈ с bash, Ρ‡Ρ‚ΠΎΠ±Ρ‹ привСсти Π½ΠΎΠ²ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ монтирования Π² ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ состояниС.

Π‘Π½Π°Ρ‡Π°Π»Π° создайтС Π½ΠΎΠ²ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ монтирования ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ:

  Π½Π΅ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ -Urm  

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ΡΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ пространства ΠΈΠΌΠ΅Π½, посмотритС Π½Π° findmnt устройства отобраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму (для краткости я ΡƒΠ΄Π°Π»ΠΈΠ» Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² монтирования ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π°):

  findmnt | ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для отобраТСния grep

/ / Dev / mapper / cs-root xfs rw, relatime, [. ..]  

Π•ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° монтирования, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Ρ… устройств.Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ устройство сопоставлСния ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Alpine:

  экспорт CONTAINER_ROOT_FOLDER = / container_practice
mount --bind $ {CONTAINER_ROOT_FOLDER} / fakeroot $ {CONTAINER_ROOT_FOLDER} / fakeroot
cd $ {CONTAINER_ROOT_FOLDER} / fakeroot  

Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ pivot_root для выполнСния дСйствия, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ chroot . pivot_root ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: new_root ΠΈ old_root (ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ put_old ). pivot_root ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ процСсса Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ put_old ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ new_root Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой.

Π’ΠΠ–ΠΠž : ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ chroot . chroot часто рассматриваСтся ΠΊΠ°ΠΊ срСдство обСспСчСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ бСзопасности. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стСпСни это ΠΏΡ€Π°Π²Π΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ этого, трСбуСтся Π±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚. Π’Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сконструированный chroot ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ бСзопасным. Однако chroot Π½Π΅ измСняСт ΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ возмоТности Linux, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ пространствС ΠΈΠΌΠ΅Π½.Он Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ядра. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ достаточно ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½ΠΎΠ³ΠΎ chroot . ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ mount ΠΈ user ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ pivot_root Π±Π΅Π· привязки, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚:

  pivot_root: Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с `. ' to `old_root / ': нСдопустимый Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚  

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Alpine, сначала создайтС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для old_root , Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡƒΡŽ ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму (Alpine).ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Alpine Linux Π½Π΅Ρ‚ символичСских ссылок для / bin ΠΈ / sbin , Π²Π°ΠΌ придСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π² свой ΠΏΡƒΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ old_root :

  ΠΌΠΊΠ΄ΠΈΡ€ old_root
pivot_root.  old_root
ПУВЬ = / bin: / sbin: $ ПУВЬ
umount -l / старый_root  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ срСда, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ пространства ΠΈΠΌΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ вмСстС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции ΠΎΡ‚ хоста. Π£ вас большС Π½Π΅Ρ‚ доступа ΠΊ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ Π½Π° хостС.ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ findmnt , ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ использовали Ρ€Π°Π½ΡŒΡˆΠ΅:

  ΠΊΠΎΡ€Π΅Π½ΡŒ @ new-mnt $ findmnt
-bash: findmnt: ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°  

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ смонтировано:

  ΠΊΠΎΡ€Π΅Π½ΡŒ @ new-mnt $ ls -l /
всСго 12
drwxr-xr-x 2 root root 4096 28 января 21:51 bin
drwxr-xr-x 2 root root 18 17 Ρ„Π΅Π² 22:53 dev
drwxr-xr-x 15 root root 4096 28 января 21:51 ΠΈ Ρ‚. Π΄.
drwxr-xr-x 2 root root 6 28 янв 21:51 домой
drwxr-xr-x 7 root root 247 28 января 21:51 lib
drwxr-xr-x 5 root root 44 28 января 21:51 ΠΌΠ΅Π΄ΠΈΠ°
drwxr-xr-x 2 root root 6 28 янв 21:51 мин.
drwxrwxr-x 2 root root 6 Ρ„Π΅Π² 17 23:09 old_root
drwxr-xr-x 2 root root 6 28 января 21:51 opt
drwxr-xr-x 2 root root 6 28 янв 21:51 proc
drwxr-xr-x 2 root root 6 17 Ρ„Π΅Π² 22:53 put_old
drwx ------ 2 ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΊΠΎΡ€Π΅Π½ΡŒ 27 Ρ„Π΅Π² 17 22:53 ΠΊΠΎΡ€Π΅Π½ΡŒ
drwxr-xr-x 2 root root 6 28 янв 21:51 Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ
drwxr-xr-x 2 root root 4096 28 янв 21:51 sbin
drwxr-xr-x 2 root root 6 28 янв 21:51 srv
drwxr-xr-x 2 root root 6 28 января 21:51 sys
drwxrwxrwt 2 root root 6 Ρ„Π΅Π² 19 16:38 tmp
drwxr-xr-x 7 root root 66 28 янв 21:51 usr
drwxr-xr-x 12 root root 137 28 января 21:51 var


ΠΊΠΎΡ€Π΅Π½ΡŒ @ new-mnt $ mount
mount: no / proc / mounts  

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ файловая систСма proc Π½Π΅ смонтирована. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

  ΠΊΠΎΡ€Π΅Π½ΡŒ @ Π½ΠΎΠ²Ρ‹ΠΉ-mnt $ mount -t proc proc / proc
mount: Π² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°Π½ΠΎ (Π²Ρ‹ root?)

ΠΊΠΎΡ€Π΅Π½ΡŒ @ new-mnt $ whoami
ΠΊΠΎΡ€Π΅Π½ΡŒ  

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ proc - это особый Ρ‚ΠΈΠΏ монтирования, связанный с пространством ΠΈΠΌΠ΅Π½ PID, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π³ΠΎ ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² своСм собствСнном пространствС ΠΈΠΌΠ΅Π½ монтирования. Π­Ρ‚ΠΎ восходит ΠΊ наслСдованию возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я обсуТдал Ρ€Π°Π½Π΅Π΅. Π― ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒ это обсуТдСниС Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΊΠΎΠ³Π΄Π° расскаТу ΠΎ пространствС ΠΈΠΌΠ΅Π½ PID. Однако, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ наслСдовании, взглянитС Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ Π½ΠΈΠΆΠ΅:

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΡƒ эту Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ, Π½ΠΎ Ссли Π²Ρ‹ слСдовали Π΅ΠΉ с самого Π½Π°Ρ‡Π°Π»Π°, Π²Ρ‹ смоТСтС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ Π΄ΠΎ этого.

[Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ API: 7 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ эффСктивных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ API]

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я рассмотрСл Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΡƒΡŽ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ пространства ΠΈΠΌΠ΅Π½ mount. Π― обсудил Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ΄Π½ΠΎΡ€Π°Π½Π³ΠΎΠ²Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² ΠΈ ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ состояниям монтирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ монтирования Π² систСмС. Для практичСской части Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму Alpine Linux, Π° Π·Π°Ρ‚Π΅ΠΌ рассмотрСли, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пространства ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для создания срСды, которая ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° chroot , Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ бСзопасной.

А ΠΏΠΎΠΊΠ° протСстируйтС ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ Π²Π½Π΅ вашСго Π½ΠΎΠ²ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ состояния монтирования , , , частный, ΠΈ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉ, . Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ PID, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ построСниС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС proc ΠΈ изоляции процСссов.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½

ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия Π² Python - Real Python

ВстроСнноС пространство ΠΈΠΌΠ΅Π½ содСрТит ΠΈΠΌΠ΅Π½Π° всСх встроСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Python.Они доступны всСгда, ΠΊΠΎΠ³Π΄Π° Python Π·Π°ΠΏΡƒΡ‰Π΅Π½. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²ΠΎ встроСнном пространствС ΠΈΠΌΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

>>>

  >>> dir (__ builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError',
 BaseException, BlockingIOError, BrokenPipeError, BufferError,
 BytesWarning, ChildProcessError, ConnectionAbortedError,
 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError',
 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError',
 'Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅', 'Π›ΠΎΠΆΡŒ', 'FileExistsError', 'FileNotFoundError',
 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError',
 ImportError, ImportWarning, IndentationError, IndexError,
 InterruptedError, IsADirectoryError, KeyError, KeyboardInterrupt,
 LookupError, MemoryError, ModuleNotFoundError, NameError, None,
 NotADirectoryError, NotImplemented, NotImplementedError, OSError,
 'OverflowError', 'PendingDeprecationWarning', 'PermissionError',
 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning',
 RuntimeError, RuntimeWarning, StopAsyncIteration, StopIteration,
 SyntaxError, SyntaxWarning, SystemError, SystemExit, TabError,
 TimeoutError, True, TypeError, UnboundLocalError,
 UnicodeDecodeError, UnicodeEncodeError, UnicodeError,
 UnicodeTranslateError, UnicodeWarning, UserWarning, ValueError,
 'ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅', 'ZeroDivisionError', '_', '__build_class__', '__debug__',
 '__doc__', '__import__', '__loader__', '__name__', '__package__',
 '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray',
 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'слоТный',
 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate',
 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset',
 getattr, globals, hasattr, hash, help, hex, id, input,
 'int', 'isinstance', 'issubclass', 'iter', 'len', 'лицСнзия', 'список',
 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'ΠΎΠ±ΡŠΠ΅ΠΊΡ‚', 'oct',
 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr',
 'reverse', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ', 'ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΉ', 'Π½Π°Π±ΠΎΡ€', 'setattr', 'slice', 'sorted', 'staticmethod',
 str, sum, super, tuple, type, vars, zip]
  

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… руководств, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ StopIteration , встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ max () ΠΈ len () , ΠΈ Ρ‚ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ int ΠΈ ΡƒΠ». .

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python ΠΏΡ€ΠΈ запускС создаСт встроСнноС пространство ΠΈΠΌΠ΅Π½. Π­Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ остаСтся ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ XML


ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ XML ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ элСмСнтов.


ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½

Π’ XML ΠΈΠΌΠ΅Π½Π° элСмСнтов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ. Π­Ρ‚ΠΎ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… XML-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π­Ρ‚ΠΎΡ‚ XML-ΠΊΠΎΠ΄ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ HTML:

<Ρ‚Π°Π±Π»ΠΈΡ†Π°>

Π―Π±Π»ΠΎΠΊΠΈ Π‘Π°Π½Π°Π½Ρ‹

Π­Ρ‚ΠΎΡ‚ XML-ΠΊΠΎΠ΄ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ столС (ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π΅ ΠΌΠ΅Π±Π΅Π»ΠΈ):

<Ρ‚Π°Π±Π»ΠΈΡ†Π°>

Африканский ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ столик

80

120

Если Π±Ρ‹ эти Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ XML Π±Ρ‹Π»ΠΈ слоТСны вмСстС, Π²ΠΎΠ·Π½ΠΈΠΊ Π±Ρ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΈΠΌΠ΅Π½. Оба содСрТат элСмСнт

, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½ΠΎΠ΅ содСрТаниС ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ XML Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ эти различия.


Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΈΠΌΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прСфикса

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ Π² XML ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ прСфикса ΠΈΠΌΠ΅Π½ΠΈ.

Π­Ρ‚ΠΎΡ‚ XML-ΠΊΠΎΠ΄ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ HTML ΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π΅ ΠΌΠ΅Π±Π΅Π»ΠΈ:

Π―Π±Π»ΠΎΠΊΠΈ

Π‘Π°Π½Π°Π½Ρ‹


Африканский ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ столик
80
120

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π²Π° элСмСнта

ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°.



ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ XML - Атрибут xmlns

ΠŸΡ€ΠΈ использовании прСфиксов Π² XML Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ для прСфикса.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ xmlns Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ Ρ‚Π΅Π³Π΅ элСмСнта.

ОбъявлСниС пространства ΠΈΠΌΠ΅Π½ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис. xmlns: прСфикс = " URI ".



Π―Π±Π»ΠΎΠΊΠΈ
Π‘Π°Π½Π°Π½Ρ‹


Африканский ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ столик
80
120

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Атрибут xmlns Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ элСмСнтС

Π΄Π°Π΅Ρ‚ прСфиксу h: ΠΏΠΎΠ»Π½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½.

Атрибут xmlns Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ элСмСнтС

Π΄Π°Π΅Ρ‚ прСфиксу f: ΠΏΠΎΠ»Π½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½.

Когда пространство ΠΈΠΌΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ для элСмСнта, всС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ прСфиксом связаны с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ пространством ΠΈΠΌΠ΅Π½.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ элСмСнтС XML:

xmlns: f = "https://www. w3schools.com/furniture">



Π―Π±Π»ΠΎΠΊΠΈ
Π‘Π°Π½Π°Π½Ρ‹


Африканский ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ столик
80
120

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: URI пространства ΠΈΠΌΠ΅Π½ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ для поиска ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ЦСль использования URI - Π΄Π°Ρ‚ΡŒ пространству ΠΈΠΌΠ΅Π½ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя.

Однако ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ пространство ΠΈΠΌΠ΅Π½ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π°
Π²Π΅Π±-страница, содСрТащая ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ пространствС ΠΈΠΌΠ΅Π½.


Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса (URI)

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса (URI) - это строка символов, которая ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-рСсурс.

НаиболСС распространСнным URI являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ рСсурсов (URL), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ адрСс Π΄ΠΎΠΌΠ΅Π½Π° Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅.Π”Ρ€ΡƒΠ³ΠΎΠΉ, Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ распространСнный Ρ‚ΠΈΠΏ URI - это Uniform Resource Name (URN).


ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ пространства ΠΈΠΌΠ΅Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для элСмСнта избавляСт нас ΠΎΡ‚ использования прСфиксов Π²ΠΎ всСх Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтах. Он ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

Π­Ρ‚ΠΎΡ‚ XML-ΠΊΠΎΠ΄ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ HTML:

Π―Π±Π»ΠΎΠΊΠΈ Π‘Π°Π½Π°Π½Ρ‹

Π­Ρ‚ΠΎΡ‚ XML-ΠΊΠΎΠ΄ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π΅ ΠΌΠ΅Π±Π΅Π»ΠΈ:

Африканский ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ столик

80

120


ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ использовании

XSLT - это язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для прСобразования XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹.

XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π½ΠΈΠΆΠ΅ - это Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для прСобразования XML Π² HTML.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ http://www.w3.org/1999/XSL/Transform опрСдСляСт XSLT
элСмСнты Π²Π½ΡƒΡ‚Ρ€ΠΈ HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°:

"?>

0 "
xmlns: xsl = "http://www.w3.org/1999/XSL/Transform">



Моя коллСкция ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков


Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π₯ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊ



Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ XSLT, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ наш
Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ XSLT.

ИспользованиС пространств ΠΈΠΌΠ΅Π½ Π² вычислСниях: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ - бизнСс-класс [2021]

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ пространства ΠΈΠΌΠ΅Π½, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ пространств ΠΈΠΌΠ΅Π½ Π² дСйствии. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ систСмном Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² самих ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ….

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄, Π½ΠΎ Π½Π΅ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° дСталях. ВмСсто этого ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΡŒΡ‚Π΅ΡΡŒ Π½Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, Π° Π½Π΅ Π½Π° обСспСчСнии Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

К / Б ++

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС setPrice (). Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Java ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ пространства ΠΈΠΌΠ΅Π½.

ΠŸΠ°ΠΊΠ΅Ρ‚ Java

Π’ Java ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π° самом Π΄Π΅Π»Π΅ являСтся пространством ΠΈΠΌΠ΅Π½. Π­Ρ‚ΠΎ Ρ‚Π° ΠΆΠ΅ концСпция, Ρ‡Ρ‚ΠΎ ΠΈ Π² C ++ (ΠΈ для всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ пространств ΠΈΠΌΠ΅Π½). Π’Ρ‹ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚Π΅ связанныС элСмСнты вмСстС ΠΈ обСспСчиваСтС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ссылку Π½Π° Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Java с нСсколькими ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ для прилоТСния Coffee.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ основная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«ΠšΠΎΡ„Π΅Β» состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²: ΠΊΠΎΡ„Π΅ ΠΈ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ класс Coffee, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠ΅Π½ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ИспользованиС ΠΏΠ°ΠΊΠ΅Ρ‚Π° (пространства ΠΈΠΌΠ΅Π½) позволяСт ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки программирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ пространства ΠΈΠΌΠ΅Π½, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Visual Basic ΠΈ C #. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ настройкС Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈΠ»ΠΈ сСти.

XML

XML ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΉ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π²Π΅Π±-прилоТСниях, Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ систСмами.XML позволяСт систСмам ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ Π² XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΈΡΡŒ вмСстС с этим Ρ„Π°ΠΉΠ»ΠΎΠΌ. Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, Π΄Π²Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ†Π΅Π½Ρƒ ΠΈΠ»ΠΈ курс. Нам Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ пространствС ΠΈΠΌΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ Π·Π½Π°Π»ΠΈ, какая Ρ†Π΅Π½Π° ΠΈΠ»ΠΈ ставка обновляСтся.

Ѐайловая систСма

Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Unix ΠΈ Windows располоТСниС Ρ„Π°ΠΉΠ»ΠΎΠ² опрСдСляСтся ΠΏΡƒΡ‚Π΅ΠΌ:

  • C: \ Users \ mdg13 \ Documents \ - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Windows, Π³Π΄Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ mdg13. Π£ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² сСти Π±ΡƒΠ΄Π΅Ρ‚ своя собствСнная ΠΏΠ°ΠΏΠΊΠ°.
  • / usr / local / apache - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ сСрвСрам Unix, Π³Π΄Π΅ слСдуСт ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Apache.

Π’ любой Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹. ЀактичСски, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 100 Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΎΠΉ Document1.docx, Ссли ΠΎΠ½ΠΈ находятся Π² Ρ€Π°Π·Π½Ρ‹Ρ… пространствах ΠΈΠΌΠ΅Π½ / ΠΏΠ°ΠΏΠΊΠ°Ρ… с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

Π‘Π΅Ρ‚ΡŒ

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ находятся Π² сСтях, ΠΊΠ°ΠΊ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, Ρ‚Π°ΠΊ ΠΈ Π² собствСнной частной Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сСти ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ пространство ΠΈΠΌΠ΅Π½ Π΄ΠΎΠΌΠ΅Π½Π°, ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Π΄ΠΎΠΌΠ΅Π½Π΅ Amazon. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сайты ΠΏΠΎΠ΄ Π½ΠΈΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹. Но ΠΊΠ°ΠΊ насчСт сайтов Amazon Π² КанадС, Π―ΠΏΠΎΠ½ΠΈΠΈ ΠΈΠ»ΠΈ Индии? Для Amazon ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ гСографичСскиС пространства ΠΈΠΌΠ΅Π½, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сайты Π² Π΄ΠΎΠΌΠ΅Π½Π΅ Amazon, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС ΠΏΠΎΠΊΠ°Π·Π°Π½ этот сцСнарий.

Π­Ρ‚Π° установка Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ отличаСтся ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° программирования ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setPrice () Π² Ρ€Π°Π·Π½Ρ‹Ρ… пространствах ΠΈΠΌΠ΅Π½. КаТдоС пространство ΠΈΠΌΠ΅Π½ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π° для страниц ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ пространством ΠΈΠΌΠ΅Π½.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ содСрТаниС ΡƒΡ€ΠΎΠΊΠ°

Π’ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ пространство ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ процСссов с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Π’ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… систСмах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ систСмы, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ вСсь бизнСс, нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ setPrice (), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ C / C ++, Java, Visual Basic ΠΈ C #. Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ пространство ΠΈΠΌΠ΅Π½.ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ пространства ΠΈΠΌΠ΅Π½ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСмах, сСтСвых Π΄ΠΎΠΌΠ΅Π½Π°Ρ… ΠΈ Π² XML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎ всСх вычислСниях. Π˜Ρ… основная функция - Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ связанныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ссылку Π½Π° Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

5. БистСма ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° - докумСнтация Python 3.9.5

Код

Python Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ ΠΊΠΎΠ΄Ρƒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅
Π² процСссС Π΅Π³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ import выглядит Ρ‚Π°ΠΊ:
Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнный способ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Π½ΠΎ это Π½Π΅ СдинствСнный
способ.Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ importlib.import_module () ΠΈ встроСнныС
__import __ () Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ import ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ; ΠΎΠ½ ΠΈΡ‰Π΅Ρ‚
Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ½ связываСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ этого поиска с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² локальном
сфСра. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ поиска ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° import опрСдСляСтся ΠΊΠ°ΠΊ
Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ __import __ () с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ __import __ () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выполнСния ΠΈΠΌΠ΅Π½ΠΈ
опСрация привязки ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° import .Π£Π²ΠΈΠ΄Π΅Ρ‚ΡŒ
import statement для Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ привязки этого ΠΈΠΌΠ΅Π½ΠΈ
опСрация.

ΠŸΡ€ΡΠΌΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² __import __ () выполняСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ поиск модуля ΠΈ, Ссли
Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, опСрация создания модуля. Π₯отя ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты,
Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… кСшСй
(Π²ΠΊΠ»ΡŽΡ‡Π°Ρ sys. modules ), Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ import выполняСт
опСрация привязки ΠΈΠΌΠ΅Π½ΠΈ.

Когда выполняСтся инструкция import , стандартная встроСнная
__import __ () ВызываСтся функция .Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ для Π²Ρ‹Π·ΠΎΠ²Π°
систСма ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, importlib.import_module () ) ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄
__import __ () ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ собствСнныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сСмантики ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

Когда ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ импортируСтся, Python ΠΈΡ‰Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ, Ссли ΠΎΠ½ Π½Π°ΠΉΠ΄Π΅Π½,
ΠΎΠ½ создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля, инициализируя Π΅Π³ΠΎ. Если Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка ModuleNotFoundError . Python Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅
стратСгии поиска Π½Π°Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ модуля, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
Π²Ρ‹Π·Π²Π°Π½.Π­Ρ‚ΠΈ стратСгии ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ…ΡƒΠΊΠΎΠ².
описано Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Π½ΠΈΠΆΠ΅.

ИзмСнСно Π² вСрсии 3.3: БистСма ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π±Ρ‹Π»Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ„Π°Π·Ρƒ
ΠΈΠ· ПЭП 302 . Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅ сущСствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° нСявного ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° - ΠΏΠΎΠ»Π½Ρ‹ΠΉ
БистСма ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° прСдставлСна ​​чСрСз sys. meta_path . ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ,
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚Π° собствСнного пространства ΠΈΠΌΠ΅Π½ (см. PEP 420 ).

ΠœΠΎΠ΄ΡƒΠ»ΡŒ importlib прСдоставляСт Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ API для взаимодСйствия с
систСма ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.НапримСр, importlib.import_module () прСдоставляСт
рСкомСндуСтся, Π±ΠΎΠ»Π΅Π΅ простой API, Ρ‡Π΅ΠΌ встроСнный __import __ () для Π²Ρ‹Π·ΠΎΠ²Π°
импортная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°. Π‘ΠΌ. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ importlib .
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π΄Π΅Ρ‚Π°Π»ΡŒ.

5.2. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹

Python ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° модуля, ΠΈ всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ относятся ΠΊ этому Ρ‚ΠΈΠΏΡƒ,
нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π° Python, C ΠΈΠ»ΠΈ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π΅Ρ‰Π΅
Π΅Ρ‰Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ ΠΈΠΌΠ΅Π½, Π² Python Π΅ΡΡ‚ΡŒ
концСпция ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ - ΠΊΠ°ΠΊ
Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΠΉΡ‚Π΅ эту аналогию слишком Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ
ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Для
Π² этой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ аналогию
ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹. Подобно ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹
иСрархичСски, ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ сами ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅
ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ модулями, Π½ΠΎ Π½Π΅ всС
ΠΌΠΎΠ΄ΡƒΠ»ΠΈ - это ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.Или, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ - это просто особый Π²ΠΈΠ΄
ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π’ частности, любой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, содСрТащий Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ __path__ , являСтся
считаСтся ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ.

Π£ всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΅ΡΡ‚ΡŒ имя. ИмСна ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ…
Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° стандартный синтаксис доступа ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ Python. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ
Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ sys ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ email ,
ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ email.mime ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ
этот ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ называСтся элСктронной ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ .mime.text .

5.2.1. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

Python опрСдСляСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²: ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ пространства ΠΈΠΌΠ΅Π½. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ
ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ сущСствовали Π² Python 3.2 ΠΈ Ρ€Π°Π½Π΅Π΅.
ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ рСализуСтся ΠΊΠ°ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, содСрТащий
__init__.py Ρ„Π°ΠΉΠ». Когда импортируСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, это
__init__.py Π€Π°ΠΉΠ» выполняСтся нСявно, ΠΈ опрСдСляСмыС ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹
привязаны ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ Π² пространствС ΠΈΠΌΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.Π€Π°ΠΉΠ» __init__.py ΠΌΠΎΠΆΠ΅Ρ‚
содСрТат Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π° Python
Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅.

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы опрСдСляСт Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ
ΠΏΠ°ΠΊΠ΅Ρ‚ с трСмя ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ:

 Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ /
    __init__.py
    ΠΎΠ΄ΠΈΠ½/
        __init__.py
    Π΄Π²Π°/
        __init__.py
    Ρ‚Ρ€ΠΈ/
        __init__.py
 

Π˜ΠΌΠΏΠΎΡ€Ρ‚ parent.one нСявно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ parent / __ init__.py ΠΈ
Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ / ΠΎΠ΄ΠΈΠ½ / __ init__.py . ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ…. Π”Π²ΡƒΡ… ΠΈΠ»ΠΈ
parent. three Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ parent / two / __ init__.py ΠΈ
parent / three / __ init__.py соотвСтствСнно.

5.2.2. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ пространства ΠΈΠΌΠ΅Π½

ΠŸΠ°ΠΊΠ΅Ρ‚ пространства ΠΈΠΌΠ΅Π½ состоит ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… частСй,
Π³Π΄Π΅ каТдая Ρ‡Π°ΡΡ‚ΡŒ вносит ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. ΠŸΠΎΡ€Ρ†ΠΈΠΈ
ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ΠŸΠΎΡ€Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ
Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ Π² zip-Ρ„Π°ΠΉΠ»Π°Ρ…, Π² сСти ΠΈΠ»ΠΈ Π² любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС, Π³Π΄Π΅ Python выполняСт поиск
Π²ΠΎ врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС; ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ модулями, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ…
прСдставлСниС.

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ пространства ΠΈΠΌΠ΅Π½ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ список для своих __path__
Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. ВмСсто этого ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ настраиваСмый ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉΡΡ Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски
Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ поиск частСй ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ…
этот ΠΏΠ°ΠΊΠ΅Ρ‚, Ссли ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ (ΠΈΠ»ΠΈ sys.path для
ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня) измСняСтся.

Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… пространств ΠΈΠΌΠ΅Π½ Π½Π΅Ρ‚ Ρ„Π°ΠΉΠ»Π° parent / __ init__.py . По Ρ„Π°ΠΊΡ‚Ρƒ,
Π²ΠΎ врСмя поиска ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ нСсколько Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² , Π³Π΄Π΅
ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ прСдоставляСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ / ΠΎΠ΄ΠΈΠ½ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ
физичСски располоТСн рядом с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ / двумя . Π’ этом случаС Python создаст
ΠΏΠ°ΠΊΠ΅Ρ‚ пространства ΠΈΠΌΠ΅Π½ для Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ·
Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ PEP 420 для спСцификации ΠΏΠ°ΠΊΠ΅Ρ‚Π° пространства ΠΈΠΌΠ΅Π½.

5.3. Π’ поисках

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ поиск, Python Π½ΡƒΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ
имя модуля (ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π½ΠΎ для Ρ†Π΅Π»Π΅ΠΉ этого обсуТдСния
Ρ€Π°Π·Π½ΠΈΡ†Π° нСсущСствСнна) импортируСтся. Π­Ρ‚ΠΎ имя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ…
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ import ΠΈΠ»ΠΈ ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²
importlib.import_module () ΠΈΠ»ΠΈ __import __ () Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π­Ρ‚ΠΎ имя Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… этапах поиска ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ
ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, e. Π³Ρ€Π°ΠΌΠΌ. foo.bar.baz . Π’ этом случаС Python
сначала пытаСтся ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ foo , Π·Π°Ρ‚Π΅ΠΌ foo.bar ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, foo.bar.baz .
Если ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка ModuleNotFoundError .

5.3.1. ΠœΠΎΠ΄ΡƒΠ»ΡŒ cache

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ мСсто, провСряСмоС ΠΏΡ€ΠΈ поискС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, - sys.modules . Π­Ρ‚ΠΎΡ‚
ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ слуТит кСшСм всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Ρ€Π°Π½Π΅Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹,
Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ. Π˜Ρ‚Π°ΠΊ, Ссли foo.bar.baz Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, sys.modules Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ записи для foo , foo.bar ,
ΠΈ foo.bar.baz . ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² качСствС значСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π’ΠΎ врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° имя модуля ищСтся Π² sys.modules ΠΈ Ссли
присутствуСт, связанноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - это ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρƒ, Π°
процСсс Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Однако, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ НСт , Ρ‚ΠΎ
ModuleNotFoundError Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. Если имя модуля отсутствуСт, Python Π±ΡƒΠ΄Π΅Ρ‚
ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ поиск модуля.

sys.modules доступСн для записи. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ
связанный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ссылки Π½Π° Π½Π΅Π³ΠΎ),
Π½ΠΎ это сдСлаСт запись Π² кСшС для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ модуля Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ
Python для Π½ΠΎΠ²ΠΎΠ³ΠΎ поиска ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ модуля ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ
Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠ»ΡŽΡ‡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π½Π° НСт , Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚.
модуля, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС ModuleNotFoundError .

Однако Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π²Ρ‹ сохраняСтС ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля,
ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ запись Π² кэшС sys.modules , Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° модуля Π±ΡƒΠ΄ΡƒΡ‚ , Π° Π½Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. Напротив,
importlib.reload () Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля ΠΈ просто
ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС модуля, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ запустив ΠΊΠΎΠ΄ модуля.

5.

3.2. Π˜ΡΠΊΠ°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΏΠΎΠ³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ

Если Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π² sys.ΠΌΠΎΠ΄ΡƒΠ»ΠΈ , Π·Π°Ρ‚Π΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Python
ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» вызываСтся для поиска ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» состоит ΠΈΠ·
Π΄Π²Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, искатСли ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ.
Π—Π°Π΄Π°Ρ‡Π° поисковика - ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, смоТСт Π»ΠΈ ΠΎΠ½ Π½Π°ΠΉΡ‚ΠΈ Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ
ΠΊΠ°ΠΊΡƒΡŽ Π±Ρ‹ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ ΠΎΠ½ Π½ΠΈ Π·Π½Π°Π». ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Π° этих
интСрфСйсы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅Ρ€Π°ΠΌΠΈ - ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚
сами, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Python Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ряд срСдств поиска ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ
Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ встроСнныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ
Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.Π’Ρ€Π΅Ρ‚ΠΈΠΉ поисковик ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡ‰Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
для ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ΠŸΡƒΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° - это список мСст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚
ΠΈΠΌΠ΅Π½Π° ΠΏΡƒΡ‚Π΅ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈΠ»ΠΈ zip-Ρ„Π°ΠΉΠ»ΠΎΠ². Π•Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ для поиска
для любого доступного рСсурса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ URL-адрСсами.

Π˜ΠΌΠΏΠΎΡ€Ρ‚Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΌ, поэтому ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ срСдства поиска для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ
Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈ объСм поиска модуля.

Finders фактичСски Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Если ΠΈΠΌ удастся Π½Π°ΠΉΡ‚ΠΈ Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΎΠ½ΠΈ
Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ модуля , ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ модуля, относящСгося ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρƒ
информация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ модуля.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… описан ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» для поисковиков ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ² Π² Π±ΠΎΠ»Π΅Π΅
подробности, Π² Ρ‚ΠΎΠΌ числС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ
импортная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°.

ИзмСнСно Π² вСрсии 3.4: Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… вСрсиях Python срСдства поиска Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ.
Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ спСцификации ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ².
Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎ врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Π½ΠΎ нСсут ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ.

5.3.3. ΠšΡ€ΡŽΡ‡ΠΊΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π½Ρ‹Π΅

Π˜ΠΌΠΏΠΎΡ€Ρ‚Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ; основной ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для
это ΠΈΠΌΠΏΠΎΡ€Ρ‚Π½Ρ‹Π΅ ΠΊΡ€ΡŽΡ‡ΠΊΠΈ .Π•ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°: ΠΌΠ΅Ρ‚Π°
Ρ…ΡƒΠΊΠΈ
ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ…ΡƒΠΊΠΈ ΠΏΡƒΡ‚ΠΈ .

ΠœΠ΅Ρ‚Π°-Ρ…ΡƒΠΊΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, ΠΏΠ΅Ρ€Π΅Π΄ Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ
ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, ΠΊΡ€ΠΎΠΌΠ΅ sys.modules поиск Π² кэшС .
Π­Ρ‚ΠΎ позволяСт ΠΌΠ΅Ρ‚Π°-Ρ…ΡƒΠΊΠ°ΠΌ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ sys.path , Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½ΠΎ
ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ встроСнныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. ΠœΠ΅Ρ‚Π°-Ρ…ΡƒΠΊΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ добавлСния Π½ΠΎΠ²Ρ‹Ρ…
поисковыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊ sys.meta_path , ΠΊΠ°ΠΊ описано Π½ΠΈΠΆΠ΅.

ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ sys.ΠΏΡƒΡ‚ΡŒ (ΠΈΠ»ΠΈ
package .__ path__ ) Π² Ρ‚ΠΎΡ‡ΠΊΠ΅, Π³Π΄Π΅ ΠΈΡ… связанный ΠΏΡƒΡ‚ΡŒ
элСмСнт встрСчаСтся. ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ добавлСния Π½ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
к sys.path_hooks , как описано ниТС.

5.3.4. ΠœΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΡŒ

Когда Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π² sys.modules , Python ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ
выполняСт поиск sys.meta_path , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит список срСдств поиска ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π­Ρ‚ΠΈ искатСли ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π·Π½Π°ΡŽΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ
Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Поисковики ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ
find_spec () , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:
имя, ΠΏΡƒΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. ΠœΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΡŒ
Finder ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ
Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Если срСдство поиска ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ, ΠΎΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ спСцификации. Если ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ НСт . Если
sys.meta_path ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° достигаСт ΠΊΠΎΠ½Ρ†Π° своСго списка Π±Π΅Π· Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°
спСцификации, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ModuleNotFoundError .Π›ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
поднятыС просто Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π²Π²Π΅Ρ€Ρ…, прСрывая процСсс ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ find_spec () ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ
Finders вызываСтся с двумя ΠΈΠ»ΠΈ трСмя Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ - это ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ
ΠΏΠΎΠ»Π½ΠΎΠ΅ имя ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ модуля, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ foo.bar.baz .
Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - это записи ΠΏΡƒΡ‚ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для поиска модуля. Для
ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - НСт , Π½ΠΎ для ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ»ΠΈ
ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°
__path__ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.Если ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ __path__ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚
Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ModuleNotFoundError . Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚
- это ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ ΠΏΠΎΠ·ΠΆΠ΅.
БистСма ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

ΠœΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½ нСсколько Ρ€Π°Π· для ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса Π½Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚.
НапримСр, прСдполагая, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· задСйствованных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½,
ΠΈΠΌΠΏΠΎΡ€Ρ‚ foo.bar.baz сначала Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, вызывая
миль Π½Π° Ρ„ΡƒΡ‚.find_spec ("foo", None, None) для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ срСдства поиска ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ ( mpf ). ПослС
foo Π±Ρ‹Π»ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, foo.bar Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΠ±Ρ…ΠΎΠ΄Π°
ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΡŒ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·, вызывая
mpf.find_spec ("foo.bar", foo .__ path__, None) . ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ foo.bar Π±Ρ‹Π»
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚
mpf.find_spec ("foo.bar.baz", foo.bar .__ path__, None) .

НСкоторыС срСдства поиска ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня. Π­Ρ‚ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚
всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ НСт , Ссли Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ НСт пСрСдаСтся ΠΊΠ°ΠΊ
Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

Python ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ sys.meta_path ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ срСдства поиска ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…
ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅
ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΈ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ· ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
(Ρ‚.Π΅. ΠΈΡΠΊΠ°Ρ‚Π΅Π»ΡŒ Π½Π° основС ΠΏΡƒΡ‚ΠΈ).

ИзмСнСно Π² вСрсии 3.4: ΠœΠ΅Ρ‚ΠΎΠ΄ find_spec () ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ
finders Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ find_module () , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ устарСла. Пока ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ,
импортная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΈΡΠΊΠ°Ρ‚Π΅Π»ΡŒ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚
find_spec () .

5.4. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°

Если ΠΈ ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½Π° спСцификация модуля, ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ (ΠΈ
Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ содСрТит) ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ модуля. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅
ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠΉ части ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°:

 ΠΌΠΎΠ΄ΡƒΠ»ΡŒ = НСт
Ссли spec.loader Π½Π΅ Ρ€Π°Π²Π΅Π½ None ΠΈ hasattr (spec.loader, 'create_module'):
    # ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ exec_module Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ΅.
    module = spec.loader.create_module (спСцификация)
Ссли ΠΌΠΎΠ΄ΡƒΠ»ΡŒ None:
    module = ModuleType (спСц.Π½Π°Π·Π²Π°Π½ΠΈΠ΅)
# Π—Π΄Π΅ΡΡŒ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ модуля, связанныС с ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ:
_init_module_attrs (спСцификация, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ)

Ссли spec.loader - НСт:
    # Π½Π΅ поддСрТиваСтся
    ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ImportError
Ссли spec.origin Ρ€Π°Π²Π΅Π½ None ΠΈ spec.submodule_search_locations Π½Π΅ Ρ€Π°Π²Π΅Π½ None:
    # ΠΏΠ°ΠΊΠ΅Ρ‚ пространства ΠΈΠΌΠ΅Π½
    sys.modules [spec.name] = ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
elif not hasattr (spec.loader, 'exec_module'):
    module = spec.loader.load_module (spec.name)
    # УстановитС __loader__ ΠΈ __package__, Ссли ΠΎΠ½ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚.
Π΅Ρ‰Π΅:
    sys.modules [spec.name] = ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
    ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
        спСц. Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ.exec_module (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ)
    ΠΊΡ€ΠΎΠΌΠ΅ BaseException:
        ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
            del sys.modules [имя спСцификации]
        ΠΊΡ€ΠΎΠΌΠ΅ KeyError:
            ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
        ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ
Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ sys.modules [spec.name]
 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅:

  • Если сущСствуСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²
    sys.modules , ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΡƒΠΆΠ΅ Π²Π΅Ρ€Π½ΡƒΠ» Π΅Π³ΠΎ.

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² sys.modules ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ
    выполняСт ΠΊΠΎΠ΄ модуля.Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ модуля ΠΌΠΎΠΆΠ΅Ρ‚
    (прямо ΠΈΠ»ΠΈ косвСнно) сам ΠΈΠΌΠΏΠΎΡ€Ρ‚; Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΅Π³ΠΎ Π² sys.modules
    Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС ΠΈ мноТСствСнныС
    Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ Π²ΠΈΠ΄Π΅.

  • Если Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ, нСисправный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ - ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСисправный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ -
    удаляСтся ΠΈΠ· sys.modules . Π›ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΡƒΠΆΠ΅ Π²
    sys.modules cache ΠΈ любой ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
    ΠΊΠ°ΠΊ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ эффСкт, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π² кСшС.Π­Ρ‚ΠΎ контрастируСт с
    ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΊΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ нСисправный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ остаСтся Π² sys.modules .

  • ПослС создания модуля, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
    устанавливаСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ модуля, связанныС с ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ (Β«_init_module_attrsΒ» Π²
    ΠΏΡ€ΠΈΠΌΠ΅Ρ€ псСвдокода Π²Ρ‹ΡˆΠ΅), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²
    Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π».

  • Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ модуля - ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
    пространство ΠΈΠΌΠ΅Π½ заполняСтся. ИсполнСниС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ
    Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ.

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ, созданный Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π² exec_module (), ΠΌΠΎΠΆΠ΅Ρ‚
    Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΌ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

ИзмСнСно Π² вСрсии 3.4: систСма ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° взяла Π½Π° сСбя стандартныС обязанности
ΠΏΠΎΠ³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ. Π Π°Π½Π΅Π΅ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ
importlib.abc.Loader.load_module () ΠΌΠ΅Ρ‚ΠΎΠ΄.

5.4.1. ΠŸΠΎΠ³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Π°ΠΆΠ½Π΅ΠΉΡˆΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ: Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ модуля.
Π˜ΠΌΠΏΠΎΡ€Ρ‚Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ importlib.abc.Loader.exec_module ()
с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля для выполнСния. Π›ΡŽΠ±ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
возвращаСтся ΠΈΠ· exec_module () игнорируСтся.

ΠŸΠΎΠ³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ

Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ трСбованиям:

  • Если ΠΌΠΎΠ΄ΡƒΠ»ΡŒ являСтся ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Python (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ встроСнного модуля ΠΈΠ»ΠΈ
    динамичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅), Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ модуля
    Π² глобальном пространствС ΠΈΠΌΠ΅Π½ модуля ( module .__ dict__ ).

  • Если Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ
    ImportError , хотя Π²ΠΎ врСмя
    exec_module () Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ.

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях ΠΈΡΠΊΠ°Ρ‚Π΅Π»ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ; Π² Ρ‚Π°ΠΊΠΈΡ… случаях
find_spec () просто Π²Π΅Ρ€Π½Π΅Ρ‚
spec с Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ, установлСнным Π½Π° self .

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° модуля Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.
ΠΏΡƒΡ‚Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° create_module () .
Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ модуля, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля.
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. create_module () Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ установки ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²
Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ модуля.Если ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ None ,
ΠΈΠΌΠΏΠΎΡ€Ρ‚Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ само создаст Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

ИзмСнСно Π² вСрсии 3.4: ΠœΠ΅Ρ‚ΠΎΠ΄ load_module () Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π°
exec_module () ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚
ΠœΠ°ΡˆΠΈΠ½Ρ‹ взяли Π½Π° сСбя всС стандартныС обязанности ΠΏΠΎ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΊΠ΅.

Для совмСстимости с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠΎΠ³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ импортная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ² load_module () , Ссли ΠΎΠ½ сущСствуСт ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π΄Π΅Π»Π°Π΅Ρ‚
Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ exec_module () .Однако load_module () Π±Ρ‹Π»
устарСло, ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ вмСсто этого Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ exec_module () .

ΠœΠ΅Ρ‚ΠΎΠ΄ load_module () Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всю ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, описанная Π²Ρ‹ΡˆΠ΅, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ модуля. ВсС
ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ограничСния с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ пояснСниями:

  • Если сущСствуСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²
    sys.modules , Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.(Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС importlib.reload () Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.) Если
    Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ сущСствуСт Π² sys.modules , Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ
    Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ модуля ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² sys.modules .

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² sys.modules ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ
    выполняСт ΠΊΠΎΠ΄ модуля, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΈΠ»ΠΈ мноТСствСнныС
    Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°.

  • Если Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС вставлСнныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.
    Π² систСм.ΠΌΠΎΠ΄ΡƒΠ»ΠΈ , Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСисправный
    ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (-Ρ‹), ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ сам Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ» ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (-Ρ‹)
    явно.

ИзмСнСно Π² вСрсии 3.5: DeprecationWarning Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ exec_module () , Π½ΠΎ
create_module () - Π½Π΅Ρ‚.

ИзмСнСно Π² вСрсии 3.6: ImportError Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ exec_module () , Π½ΠΎ
create_module () - Π½Π΅Ρ‚.

5.4.2. Π‘ΡƒΠ±ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

Когда ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ загруТаСтся с использованиСм любого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, importlib API),
ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ встроСнный __import __ () ) a
привязка помСщаСтся Π² пространство ΠΈΠΌΠ΅Π½ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ модуля ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ подмодуля.
НапримСр, Ссли Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ spam Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ foo , послС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
spam.foo , spam Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ foo , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ привязан ΠΊ
ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.Допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²:

 спам /
    __init__.py
    foo.py
    bar.py
 

ΠΈ spam / __ init__.py содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

 ΠΈΠ· .foo import Foo
ΠΈΠ· .bar import Bar
 

, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ привязку ΠΈΠΌΠ΅Π½ΠΈ ΠΊ foo ΠΈ bar Π²
спам ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

 >>> ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спам
>>> spam.foo
<ΠΌΠΎΠ΄ΡƒΠ»ΡŒ 'spam.foo' ΠΈΠ· '/ tmp / imports / spam / foo.py '>
>>> spam.bar
<ΠΌΠΎΠ΄ΡƒΠ»ΡŒ 'spam.bar' ΠΈΠ· '/tmp/imports/spam/bar.py'>
 

Учитывая Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° привязки ΠΈΠΌΠ΅Π½ Python, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ
Π½Π° самом Π΄Π΅Π»Π΅ это Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ систСмы ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ sys.modules ['spam'] ΠΈ
sys.modules ['spam.foo'] (ΠΊΠ°ΠΊ послС Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°), послСдний
Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ foo ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ.

5.4.3. БпСцификация модуля

Π˜ΠΌΠΏΠΎΡ€Ρ‚Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅.
Π²ΠΎ врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, особСнно ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ
ΠΎΠ±Ρ‰ΠΈΠΉ для всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. ЦСль спСцификации модуля - ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
эта информация, связанная с ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ модуля.

ИспользованиС спСцификации Π²ΠΎ врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ состояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ
систСмныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ΅ΠΆΠ΄Ρƒ искатСлСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ модуля
ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ выполняСт. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅, это позволяСт
ΠΈΠΌΠΏΠΎΡ€Ρ‚Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ для выполнСния стандартных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΊΠΈ,
Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π±Π΅Π· спСцификации модуля эту ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ нСсСт Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ.

БпСцификация модуля прСдставлСна ​​как Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ __spec__ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ модуля.
Π‘ΠΌ. ModuleSpec для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ содСрТании
спСцификация модуля.

5.4.5. ΠΌΠΎΠ΄ΡƒΠ»ΡŒ .__ ΠΏΡƒΡ‚ΡŒ__

По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ, Ссли ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ __path__ , это ΠΏΠ°ΠΊΠ΅Ρ‚.

Атрибут __path__ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ sys.path ,
я.Π΅. прСдоставлСниС списка мСст для поиска ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π²ΠΎ врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.
Однако __path__ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, Ρ‡Π΅ΠΌ
sys.path .

__path__ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈΠ· строк, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустым.
Π’Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ ΠΈ для sys.path , Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ
__path__ и sys.path_hooks (описано ниТС)
ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° __path__ .

__init__ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.Π€Π°ΠΉΠ» py ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ __path__ ΠΏΠ°ΠΊΠ΅Ρ‚Π°
Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, ΠΈ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±Ρ‹Π» способ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² пространства ΠΈΠΌΠ΅Π½
Π΄ΠΎ PEP 420 . Π‘ принятиСм PEP 420 ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ пространства ΠΈΠΌΠ΅Π½ Π½Π΅
большС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ __init__.py Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащих Ρ‚ΠΎΠ»ΡŒΠΊΠΎ __path__
ΠΊΠΎΠ΄ манипуляции; ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° автоматичСски устанавливаСт __path__
ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ для ΠΏΠ°ΠΊΠ΅Ρ‚Π° пространства ΠΈΠΌΠ΅Π½.

5.4.6. ΠœΠΎΠ΄ΡƒΠ»ΡŒ reprs

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρƒ всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ для использования Ρ€Π΅ΠΏΠ΅Ρ€, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² зависимости ΠΎΡ‚
Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅, Π° Π² спСцификации модуля Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ явно
ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ воспроизвСдСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² модуля.

Если Ρƒ модуля Π΅ΡΡ‚ΡŒ спСцификация ( __spec__ ), ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° попытаСтся
Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΡ€Ρ‚ ΠΈΠ· Π½Π΅Π³ΠΎ. Если это Π½Π΅ удаСтся ΠΈΠ»ΠΈ спСцификации Π½Π΅Ρ‚, ΠΈΠΌΠΏΠΎΡ€Ρ‚
систСма создаст Ρ€Π΅ΠΏΠΎΡ€Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΡŽΠ±ΡƒΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ
Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅. Он попытаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ .__ name__ ,
module .__ file__ ΠΈ module .__ loader__ Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² repr,
со значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для любой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая отсутствуСт.

Π’ΠΎΡ‚ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

  • Если ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ __spec__ , информация Π² спСцификации
    ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Ρ€Π΅ΠΏΡ€.«Имя», Β«Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΒ», «происхоТдСниС» ΠΈ
    ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ Β«has_locationΒ».

  • Если ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ __file__ , ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ
    Ρ€Π΅ΠΏΡ€. модуля

  • Если Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π½Π΅Ρ‚ __file__ , Π½ΠΎ Π΅ΡΡ‚ΡŒ __loader__ , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚
    НСт , Ρ‚ΠΎΠ³Π΄Π° repr Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ repr модуля.

  • Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ __name__ модуля Π² Ρ€Π΅ΠΏΡ€.

ИзмСнСно Π² вСрсии 3.4: ИспользованиС loader.module_repr ()
устарСл, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ спСцификация модуля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅
ΠΌΠ°ΡˆΠΈΠ½Ρ‹ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ модуля Ρ€Π΅ΠΏΡ€.

Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости с Python 3.3 Ρ€Π΅ΠΏΠ΅Ρ€ модуля Π±ΡƒΠ΄Π΅Ρ‚
гСнСрируСтся ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°
module_repr () ΠΌΠ΅Ρ‚ΠΎΠ΄, Ссли ΠΎΠ½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΏΡ€Π΅ΠΆΠ΄Π΅
пробуя любой ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, описанный Π²Ρ‹ΡˆΠ΅. Однако этот ΠΌΠ΅Ρ‚ΠΎΠ΄ устарСл.

5.4.7. АннулированиС ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Python Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° .pyc , ΠΎΠ½ провСряСт,
cache ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ с исходным Ρ„Π°ΠΉΠ»ΠΎΠΌ .py . По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Python Π΄Π΅Π»Π°Π΅Ρ‚ это
сохраняя ΠΌΠ΅Ρ‚ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ послСднСго измСнСния источника Π² Ρ„Π°ΠΉΠ»Π΅ кСша, ΠΊΠΎΠ³Π΄Π°
ΠΏΠΈΡΠ°Ρ‚ΡŒ это. Π’ΠΎ врСмя выполнСния систСма ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π·Π°Ρ‚Π΅ΠΌ провСряСт Ρ„Π°ΠΉΠ» кСша с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ
ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сохранСнных ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π΅ кСша Π½Π° соотвСтствиС исходному
ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅.

Python Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ кэша Β«Π½Π° основС Ρ…ΡΡˆΠ°Β», Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… хранится Ρ…ΡΡˆ исходного ΠΊΠΎΠ΄Π°.
содСрТимоС Ρ„Π°ΠΉΠ»Π°, Π° Π½Π΅ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅. Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
.Π€Π°ΠΉΠ»Ρ‹ pyc : ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΈ Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… Ρ…Π΅Ρˆ-Ρ„Π°ΠΉΠ»ΠΎΠ² .pyc ,
Python провСряСт Ρ„Π°ΠΉΠ» кСша, Ρ…Π΅ΡˆΠΈΡ€ΡƒΡ исходный Ρ„Π°ΠΉΠ» ΠΈ сравнивая
ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ…Π΅Ρˆ с Ρ…Π΅ΡˆΠ΅ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ кСша. Если ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ кСш Π½Π° основС Ρ…Π΅ΡˆΠ°
Ρ„Π°ΠΉΠ» оказываСтся Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Python восстанавливаСт Π΅Π³ΠΎ ΠΈ записываСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ
Кэш-Ρ„Π°ΠΉΠ» Π½Π° основС Ρ…ΡΡˆΠ°. Для Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… Ρ…Π΅Ρˆ-Ρ„Π°ΠΉΠ»ΠΎΠ² .pyc Python просто
ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» кСша дСйствитСлСн, Ссли ΠΎΠ½ сущСствуСт. Ρ„Π°ΠΉΠ»ΠΎΠ² .pyc Π½Π° основС Ρ…ΡΡˆΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²
ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ --check-hash-based-pycs
Ρ„Π»Π°Π³.

ИзмСнСно Π² вСрсии 3.7: Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ…Π΅Ρˆ-Ρ„Π°ΠΉΠ»Ρ‹ .pyc . РаньшС Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ
Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ кСшСй Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π½Π° основС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ.

5.5. Поиск Π½Π° основС ΠΏΡƒΡ‚ΠΈ

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Python поставляСтся с нСсколькими поисковиками ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
Один ΠΈΠ· Π½ΠΈΡ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ поиском ΠΏΡƒΡ‚ΠΈ
( PathFinder ), ΠΈΡ‰Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°,
ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит список записСй ΠΏΡƒΡ‚ΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ
запись ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ мСсто для поиска ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Π‘Π°ΠΌΠΎ срСдство поиска ΠΏΡƒΡ‚Π΅ΠΉ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.ВмСсто этого
ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ записи ΠΏΡƒΡ‚ΠΈ, связывая ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ… с
срСдство поиска записи ΠΏΡƒΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ.

Набор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ срСдств поиска Π²Ρ…ΠΎΠ΄ΠΎΠ² ΠΏΡƒΡ‚ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всю сСмантику для поиска
ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ исходный ΠΊΠΎΠ΄ Python
ΠΊΠΎΠ΄ ( Ρ„Π°ΠΉΠ»ΠΎΠ² .py, ), Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ Python ( Ρ„Π°ΠΉΠ»ΠΎΠ² .pyc, ) ΠΈ
раздСляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, .so Ρ„Π°ΠΉΠ»ΠΎΠ²). ΠŸΡ€ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ zipimport
ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, срСдства поиска ΠΏΡƒΡ‚Π΅ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚
Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° всСх этих Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² (ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ) ΠΈΠ· zip-Ρ„Π°ΠΉΠ»ΠΎΠ².

Записи ΠΏΡƒΡ‚ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ мСстополоТСниями Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Они ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π°
URL-адрСса, запросы ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСстополоТСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ
Π½ΠΈΡ‚ΡŒ.

БрСдство поиска Π½Π° основС ΠΏΡƒΡ‚ΠΈ прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹
ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ записСй ΠΏΡƒΡ‚ΠΈ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ поиска. НапримСр,
Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ записи ΠΏΡƒΡ‚ΠΈ ΠΊΠ°ΠΊ сСтСвыС URL-адрСса, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΠΎΠ²ΡƒΡˆΠΊΡƒ
ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ сСмантику HTTP для поиска ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. Π­Ρ‚ΠΎΡ‚ ΠΊΡ€ΡŽΡ‡ΠΎΠΊ (Π°
callable) Π²Π΅Ρ€Π½Π΅Ρ‚ срСдство поиска записи ΠΏΡƒΡ‚ΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»
описанный Π½ΠΈΠΆΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π±Ρ‹Π» использован для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° модуля ΠΈΠ·
Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Π² этом ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ finder ,
различая ΠΈΡ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ "поиск ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ" ΠΈ
поиск ΠΏΡƒΡ‚ΠΈ Π²Ρ…ΠΎΠ΄Π°. Π­Ρ‚ΠΈ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° искатСлСй ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ,
ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎ врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
процСсс, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ.
Π’ частности, поисковики ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.
процСсс, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΎΠ±Ρ…ΠΎΠ΄Π΅ sys.meta_path .

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ этого, срСдства поиска Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡƒΡ‚ΡŒ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π΅Ρ‚Π°Π»ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
искатСля Π½Π° основС ΠΏΡƒΡ‚ΠΈ, ΠΈ Π½Π° самом Π΄Π΅Π»Π΅, Ссли Π±Ρ‹ ΠΈΡΠΊΠ°Ρ‚Π΅Π»ΡŒ Π½Π° основС ΠΏΡƒΡ‚ΠΈ Π±Ρ‹Π»
ΡƒΠ΄Π°Π»Π΅Π½ΠΎ ΠΈΠ· sys.meta_path , Π½Π΅Ρ‚ сСмантики поиска записи ΠΏΡƒΡ‚ΠΈ
Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½.

5.5.1. Поиск ΠΏΡƒΡ‚Π΅ΠΉ

Π˜ΡΠΊΠ°Ρ‚Π΅Π»ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° поиск ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ
ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Python, располоТСниС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Π½ΠΎ строкой
запись ΠΏΡƒΡ‚ΠΈ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ записСй ΠΏΡƒΡ‚ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ мСстополоТСния Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС,
Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ этим.

Π’ качСствС срСдства поиска ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ срСдство поиска Π½Π° основС ΠΏΡƒΡ‚ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚
find_spec () ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Ρ€Π°Π½Π΅Π΅
описан, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΡ€ΡŽΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для
Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ способ поиска ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ· ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

ΠŸΡ€ΠΈ поискС ΠΏΡƒΡ‚ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: sys.path ,
sys.path_hooks ΠΈ sys.path_importer_cache . __path__
Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Они ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ способы
Ρ‡Ρ‚ΠΎ импортная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ настроСна.

sys.path содСрТит список строк, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… поиск мСстополоТСния для
ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Он инициализируСтся ΠΈΠ· PYTHONPATH
пСрСмСнная срСды ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ установки ΠΈ
значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, зависящиС ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Записи Π² sys.path ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ
ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, zip-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ «мСста»
(см. ΠΌΠΎΠ΄ΡƒΠ»ΡŒ сайта ), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
URL-адрСса ΠΈΠ»ΠΈ запросы ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. На Π½Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки ΠΈ Π±Π°ΠΉΡ‚Ρ‹.
систСм.ΠΏΡƒΡ‚ΡŒ ; всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Π±Π°ΠΉΡ‚ΠΎΠ²
записСй опрСдСляСтся поисковиками ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ.

БрСдство поиска Π½Π° основС ΠΏΡƒΡ‚ΠΈ - это срСдство поиска ΠΌΠ΅Ρ‚Π° ΠΏΡƒΡ‚ΠΈ, поэтому ΠΈΠΌΠΏΠΎΡ€Ρ‚
ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ поиск ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° с Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡƒΡ‚ΠΈ
Π½Π° основС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° поиска find_spec () ΠΊΠ°ΠΊ
описано Ρ€Π°Π½Π΅Π΅. Когда ΠΏΡƒΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊ
find_spec () Π΄Π°Π½ΠΎ, это Π±ΡƒΠ΄Π΅Ρ‚
список строковых ΠΏΡƒΡ‚Π΅ΠΉ для ΠΎΠ±Ρ…ΠΎΠ΄Π° - ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΏΠ°ΠΊΠ΅Ρ‚ __path__
Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² этом ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ path Ρ€Π°Π²Π΅Π½
НСт , это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ sys.path .

БрСдство поиска Π½Π° основС ΠΏΡƒΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ запись Π² ΠΏΡƒΡ‚ΠΈ поиска, ΠΈ
для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΈΡ‰Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ поиск ΠΏΡƒΡ‚Π΅ΠΉ Π²Ρ…ΠΎΠ΄Π°
( PathEntryFinder ) для
запись ΠΏΡƒΡ‚ΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ дорогостоящая опСрация (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ
stat () Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° Π²Ρ‹Π·ΠΎΠ² для этого поиска), поиск Π½Π° основС ΠΏΡƒΡ‚ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚
записи ΠΏΡƒΡ‚ΠΈ сопоставлСния кэша срСдствам поиска записСй ΠΏΡƒΡ‚ΠΈ.Π­Ρ‚ΠΎΡ‚ кСш поддСрТиваСтся
Π² sys.path_importer_cache (нСсмотря Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅, этот кСш Π½Π° самом Π΄Π΅Π»Π΅
Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ поиска, Π° Π½Π΅ ограничиваСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ-ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅Ρ€Π°ΠΌΠΈ).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, дорогостоящий поиск ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ записи ΠΏΡƒΡ‚ΠΈ
поиск ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Код ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
бСсплатно для удалСния записСй кСша ΠΈΠ· sys.path_importer_cache ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ
поисковик Π½Π° основС ΠΏΡƒΡ‚ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ снова Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск записи ΠΏΡƒΡ‚ΠΈ.

Если запись ΠΏΡƒΡ‚ΠΈ отсутствуСт Π² кэшС, поисковик Π½Π° основС ΠΏΡƒΡ‚ΠΈ выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ
ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌΡƒ Π² sys.path_hooks . КаТдая запись ΠΏΡƒΡ‚ΠΈ
Ρ…ΡƒΠΊΠΈ Π² этом спискС Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ,
запись ΠΏΡƒΡ‚ΠΈ для поиска. Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ
поисковик, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ запись ΠΏΡƒΡ‚ΠΈ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ
ImportError . ImportError ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ срСдством поиска Π½Π° основС ΠΏΡƒΡ‚ΠΈ для
сигнал ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π»ΠΎΠ²ΡƒΡˆΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ срСдство поиска ΠΏΡƒΡ‚ΠΈ
для этой записи ΠΏΡƒΡ‚ΠΈ. Π’
ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ игнорируСтся, ΠΈ итСрация ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° продолТаСтся. ΠšΡ€ΡŽΠΊ
слСдуСт ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ строковый, Π»ΠΈΠ±ΠΎ Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚; ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
Π΄ΠΎ ΠΊΡ€ΡŽΡ‡ΠΊΠ° (e.Π³Ρ€Π°ΠΌΠΌ. это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, UTF-8 ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅
else), ΠΈ Ссли Π»ΠΎΠ²ΡƒΡˆΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ
ImportError .

Если sys.path_hooks итСрация заканчиваСтся Π±Π΅Π· поиска записи ΠΏΡƒΡ‚ΠΈ
возвращаСтся, Ρ‚ΠΎ поисковик Π½Π° основС ΠΏΡƒΡ‚ΠΈ
find_spec () ΠΌΠ΅Ρ‚ΠΎΠ΄ сохранит None
Π² sys.path_importer_cache (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ срСдства поиска для
эта запись ΠΏΡƒΡ‚ΠΈ) ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ None , указывая, Ρ‡Ρ‚ΠΎ это
поисковику ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Если срСдство поиска записи ΠΏΡƒΡ‚ΠΈ - это , Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· записСй ΠΏΡƒΡ‚ΠΈ
ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ callables Π½Π° sys.path_hooks , Ρ‚ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»
Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ срСдства поиска ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ модуля, которая Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅
ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ - обозначаСтся пустой строкой - обрабатываСтся
Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… записСй Π½Π° sys.path . Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ссли
Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π΅ сущСствуСт, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ сохраняСтся Π²
систСм.path_importer_cache . Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ
ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ просматриваСтся свСТим для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поиска модуля. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΏΡƒΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для
sys.path_importer_cache ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ
importlib.machinery.PathFinder.find_spec () Π±ΡƒΠ΄Π΅Ρ‚ фактичСским Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ
Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π° Π½Π΅ пустая строка.

5.5.2. ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» поиска Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡƒΡ‚ΡŒ

Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ для
Π²Π½ΠΎΡΠΈΡ‚ΡŒ части Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ пространства ΠΈΠΌΠ΅Π½, срСдства поиска ΠΏΡƒΡ‚Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ
ΠΌΠ΅Ρ‚ΠΎΠ΄ find_spec () .

find_spec () ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:
ΠΏΠΎΠ»Π½ΠΎΠ΅ имя ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ модуля ΠΈ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) Ρ†Π΅Π»ΡŒ
ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. find_spec () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ для модуля.
Π’ этой спСцификации всСгда Π±ΡƒΠ΄Π΅Ρ‚ установлСн Β«Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΒ» (Π·Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ).

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ машинС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Ρ‡Ρ‚ΠΎ спСцификация прСдставляСт собой пространство ΠΈΠΌΠ΅Π½
Ρ‡Π°ΡΡ‚ΡŒ, срСдство поиска записи ΠΏΡƒΡ‚ΠΈ устанавливаСт Β«submodule_search_locationsΒ» Ρ€Π°Π²Π½Ρ‹ΠΌ
список, содСрТащий Ρ‡Π°ΡΡ‚ΡŒ.

ИзмСнСно Π² вСрсии 3.4: find_spec () Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ
find_loader () ΠΈ
find_module () , ΠΎΠ±Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…
Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ устарСли, Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ссли find_spec () Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ.

Π‘Ρ‚Π°Ρ€Ρ‹Π΅ срСдства поиска ΠΏΡƒΡ‚Π΅ΠΉ доступа ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих Π΄Π²ΡƒΡ… ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²
вмСсто find_spec () . ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡΠΎΠ±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ
Ρ€Π°Π΄ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. Однако, Ссли find_spec () - это
Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² поисковикС записи ΠΏΡƒΡ‚ΠΈ, ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

find_loader () ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚,
ΠΏΠΎΠ»Π½ΠΎΠ΅ имя ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ модуля. find_loader ()
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 2-ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт являСтся Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт
являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ пространства ΠΈΠΌΠ΅Π½.

Для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ рСализациями ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΌΠ½ΠΎΠ³ΠΈΠ΅ срСдства поиска Π²Ρ…ΠΎΠ΄ΠΎΠ² ΠΏΡƒΡ‚ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС,
Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ find_module () , ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ поисковиками ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ.
Однако ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ поиска ΠΏΡƒΡ‚ΠΈ find_module () Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ.
с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ path (оТидаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ
информация ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΡƒ ΠΏΡƒΡ‚ΠΈ).

ΠœΠ΅Ρ‚ΠΎΠ΄ find_module () Π² срСдствах поиска записи ΠΏΡƒΡ‚ΠΈ устарСл,
Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π½Π΅ позволяСт поисковику Π²Ρ…ΠΎΠ΄Π° ΠΏΡƒΡ‚ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ части Π²
ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ пространства ΠΈΠΌΠ΅Π½. Если ΠΈ find_loader () , ΠΈ find_module ()
ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² поисковикС записи ΠΏΡƒΡ‚ΠΈ, систСма ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ
find_loader () вмСсто find_module () .

5,6. Π—Π°ΠΌΠ΅Π½Π° стандартной систСмы ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°

Π‘Π°ΠΌΡ‹ΠΉ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π·Π°ΠΌΠ΅Π½Ρ‹ всСй систСмы ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° - это
ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ содСрТимоС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ sys.meta_path , Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΠΈΡ…
ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ с настраиваСмым ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ.

Если допустимо ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
Π½Π΅ затрагивая Π΄Ρ€ΡƒΠ³ΠΈΠ΅ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ систСмС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΠ²
встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ __import __ () ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достаточно. Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°
Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ модуля Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для измСнСния повСдСния
ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² этом ΠΌΠΎΠ΄ΡƒΠ»Π΅.

Для Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ прСдотвращСния ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° Π½Π° Ρ€Π°Π½Π½Π΅ΠΉ стадии
ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΡŒ (вмСсто ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ стандартной систСмы ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°),
достаточно ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ModuleNotFoundError прямо ΠΈΠ·
find_spec () вмСсто Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°
НСт .ПослСднСС ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ поиск ΠΌΠ΅Ρ‚Π°-ΠΏΡƒΡ‚ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ,
ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ прСкращаСтся.

5,7. ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ. ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° Π² Π½Π°Ρ‡Π°Π»Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ
import, начиная с Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π”Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Π΅Π΄ΡƒΡ‰ΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚
ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ (Π°ΠΌ) Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π° Ρ‚ΠΎΡ‡ΠΊΡƒ
послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ. НапримСр, ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ:

 ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° /
    __Π² этом__.Ρ€Ρƒ
    ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚1 /
        __init__.py
        moduleX.py
        moduleY.py
    ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚2 /
        __init__.py
        moduleZ.py
    moduleA.py
 

Π’ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ 1 / moduleX.py ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Π΅1 / __ init__.py ,
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ допустимыС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚:

 ΠΈΠ· .moduleY ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спам
ΠΈΠ· .moduleY ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спам ΠΊΠ°ΠΊ Π²Π΅Ρ‚Ρ‡ΠΈΠ½Ρƒ
ΠΈΠ· . ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°Y
from ..subpackage1 import moduleY
from ..subpackage2.moduleZ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ яйца
from ..moduleA import foo
 

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ import <> , Π»ΠΈΠ±ΠΎ ΠΈΠ· <> import <>
синтаксис, Π½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ; ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°
для этого Ρ‚ΠΎ:

Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ XXX.YYY.ZZZ Π² качСствС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ выраТСния, Π½ΠΎ .moduleY
Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

5,8. ΠžΡΠΎΠ±Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ для __main__

ΠœΠΎΠ΄ΡƒΠ»ΡŒ __main__ - это особый случай ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ Python.
систСма. Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ __main__
инициализируСтся нСпосрСдствСнно ΠΏΡ€ΠΈ запускС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΊΠ°ΠΊ sys ΠΈ
встроСнных . Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ этих Π΄Π²ΡƒΡ…, это Π½Π΅ совсСм
ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ встроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ
__main__ инициализируСтся Π² зависимости ΠΎΡ‚ Ρ„Π»Π°Π³ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² с
ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

5.8.1. __машина __.__ spec__

Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ инициализируСтся __main__ , __main __.__ spec__
устанавливаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π° НСт .

Когда Python запускаСтся с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ -m , устанавливаСтся __spec__
ΠΊ спСцификации ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ модуля ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. __spec__ - это
Ρ‚Π°ΠΊΠΆΠ΅ заполняСтся, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ __main__ загруТаСтся ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ выполнСния
ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, zip-Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ sys.ΠΏΡƒΡ‚ΡŒ запись.

Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях
__main __.__ spec__ установлСн Π½Π° None , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для заполнСния
__main__ Π½Π΅ соотвСтствуСт Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ __main __.__ spec__ всСгда Ρ€Π°Π²Π½ΠΎ None Π² послСднСм случаС,
, Π΄Π°ΠΆΠ΅ Ссли Ρ„Π°ΠΉΠ» тСхничСски ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
вмСсто. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ -m , Ссли Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ допустимыС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ модуля.
Π² __main__ .

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ссли __main__ соотвСтствуСт ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ
ΠΈ __main __.__ spec__ установлСно соотвСтствСнно, ΠΎΠ½ΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ
ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈ ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ
if __name__ == "__main__": ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ использовании модуля
для заполнСния пространства ΠΈΠΌΠ΅Π½ __main__ , Π° Π½Π΅ Π²ΠΎ врСмя ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

5,9. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ выпуски

XXX Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ схСму.

XXX * (import_machinery.rst) ΠΊΠ°ΠΊ насчСт Ρ€Π°Π·Π΄Π΅Π»Π°, посвящСнного Ρ‚ΠΎΠ»ΡŒΠΊΠΎ
Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅
связанныС записи Π½Π° справочной страницС ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…?

XXX runpy, pkgutil ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π² руководствС ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Β«Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅Β»
ссылки Π²Π²Π΅Ρ€Ρ…Ρƒ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π΄Π΅Π» Π½ΠΎΠ²ΠΎΠΉ систСмы ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

XXX Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ пояснСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ
__main__ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½?

XXX Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ __main__ ΠΏΡ€ΠΈΡ‡ΡƒΠ΄Π°Ρ… / ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… камнях (Ρ‚.Π΅. ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·
PEP 395 ).

5.10. Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ измСнился с ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π½Π΅ΠΉ сущСствования Python. Π’
ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ спСцификация ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² всС Π΅Ρ‰Π΅ доступна для чтСния,
хотя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ измСнились с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° написания этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ спСцификация для sys.meta_path Π±Ρ‹Π»Π° PEP 302 , с
ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π² PEP 420 .

PEP 420 прСдставил ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ пространства ΠΈΠΌΠ΅Π½ для
Python 3.3. PEP 420 Ρ‚Π°ΠΊΠΆΠ΅ прСдставил ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» find_loader () ΠΊΠ°ΠΊ
Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° find_module () .

PEP 366 описываСт Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° __package__ для
явный ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π² основных модулях.

PEP 328 Π²Π²Π΅Π» Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΈ явный ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ
ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ __name__ для сСмантики PEP 366 Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ для
__ΠΏΠ°ΠΊΠ΅Ρ‚__ .

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *