Потому что эти два понятия на самом деле не связаны.
Один представляет собой концепцию имен пакетов / модулей на языке Python, а другой - концепцию менеджера пакетов.
Посмотрите на простую команду упаковки с zip:
zip -r MyCoolTool.zip tool.py
Инструмент называется tool
, что, вероятно, не является уникальным, и если вы не знаете, что это MyCoolTool, вы не знаете, какой [112 ] это. Когда я загружаю его куда-то, я называю его MyCoolTool
, так что теперь у вас более уникальное имя, которое может быть немного более описательным.
Другой момент заключается в том, что пакет pip может включать в себя больше модулей, чем один. PyYAML
может, например, включать второй модуль Python yaml2xml
в дополнение к yaml
.
Наконец, может быть несколько реализаций. PyYAML
звучит как чистая реализация Python. Теперь предположим, что вам нужен действительно быстрый синтаксический анализатор, тогда вы можете запрограммировать CYAML
на C-backend, но с тем же интерфейсом под именем yaml
.
Обычно вы можете связать редакторов и т. Д. Во время выполнения с помощью TypeDescriptor.AddAttributes
. Например (свойство Bar
должно отображаться с «...», которое отображает «Редактирование!»):
using System;
using System.ComponentModel;
using System.Drawing.Design;
using System.Windows.Forms;
class Foo
{
public Foo() { Bar = new Bar(); }
public Bar Bar { get; set; }
}
class Bar
{
public string Value { get; set; }
}
class BarEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
MessageBox.Show("Editing!");
return base.EditValue(context, provider, value);
}
}
static class Program
{
[STAThread]
static void Main()
{
TypeDescriptor.AddAttributes(typeof(Bar),
new EditorAttribute(typeof(BarEditor), typeof(UITypeEditor)));
Application.EnableVisualStyles();
Application.Run(new Form { Controls = { new PropertyGrid { SelectedObject = new Foo() } } });
}
}