Какая связь между настройкой (имя) и расширением (имя)

Если JSON имеет отступ, это может работать:

Regex.Replace(result, @"(\s*)""@(.*)"":", @"$1""$2"":", RegexOptions.IgnoreCase);
0
задан Angew 16 January 2019 в 14:14
поделиться

1 ответ

Самым большим источником недоразумений является то, что слово «пакет» сильно перегружено. В игре есть 4 разных имени - имя каталога, используемого для разработки (тот, который содержит setup.py), имя каталога, содержащего __init__.py и других импортируемых модулей, имя дистрибутива в PyPI и Название расширения. Довольно часто первые 3 одинаковы или похожи, но это не обязательно.

Имя каталога разработки может быть любым, его имя не играет никакой роли. Конечно, это правильно назвать, но это только удобство.

Имя каталога с файлами Python указывает на импортируемый пакет. Как только пакет назван для импорта, имя обычно застревает и не может быть изменено.

Название дистрибутива дает одну страницу в PyPI и имя дистрибутивных файлов (исходный дистрибутив, яйца, колёса). Это имя, которое вы называете в setup(name='distribution') вызове.

Расширения - это модули Python, поэтому имя расширения должно быть собственно именем модуля. Но имя, которое вы вводите в Extension(), должно быть полным путевым путём к модулю, включая имя пакета верхнего уровня. В вашем примере это

Extension(
  name = 'Abc.Xyz',
  sources = ['a.cpp', 'b.cpp']
)

Это производит расширение, которое может быть импортировано как

  import Abc.Xyz

или

  from Abc import Xyz

или

  from Abc.Xyz import <internal name>
[1131 ] Позвольте мне показать подробный реальный пример. Я поддерживаю библиотеку шаблонов под названием CheetahTemplate . Я разрабатываю его в каталоге разработки под названием cheetah3/. Распределение в PyPI называется Cheetah3 ; это имя я ввел в setup(name='Cheetah3') . Модуль верхнего уровня - Cheetah , следовательно, один делает import Cheetah.Template или from Cheetah import Template; это означает, что у меня есть каталог cheetah3/Cheetah/.

Библиотека имеет расширение _namemapper . Имя, используемое в Extension(), является Cheetah._namemapper .

0
ответ дан phd 16 January 2019 в 14:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: