Он устанавливает их в автоматически созданный подкаталог базы кода с именем .eggs
как .egg
s.Это потому, что .egg
s предназначены для импорта из любого места.
Таким образом, это, скорее всего, не будет работать в современной среде, потому что пакеты не распространяются как .egg
s (что потеряло конкуренцию для .whl
s) поэтому setuptools
придется строить их из исходного кода (с bdist_egg
).Что, скорее всего, не удастся для многих широко используемых бинарных пакетов с нетривиальными требованиями к сборке (не говоря уже о необходимом времени и том факте, что пакеты также не тестируются как .egg
s, и может произойти сбой при такой упаковке).
Вместо этого перечисление требований к сборке в requirements.txt
и вызов pip install -r requirements.txt
до того, как сборка, похоже, стала широко распространенной практикой.Это не делает setup.py
автоматически компилируемым из исходного кода, хотя pip
.
Я пытался установить их самостоятельно с setup.py
, но это оказалось хрупким (например, если у пользователя нет прав на записьна site-packages
).
Наилучшим решением, принятым по крайней мере рядом крупных проектов, кажется, является просто сбой setup.py
, если они отсутствуют.Это особенно полезно, если требования не к Python, а к библиотекам C, так как setup.py
все равно не знает, как установить их в конкретной среде.Как видите, это естественным образом дополняет requirements.txt
.