Какая команда setup.py обновит исходный код в пакетах сайта? - PullRequest
0 голосов
/ 07 ноября 2019

Я запустил

python setup.py sdist --formats=gztar,zip bdist_wheel

, а затем

python setup.py install

В результате файлы egg создаются в каталоге site-packages, но не the <package-name>/<package-source files>:

$ls  /usr/local/lib/python3.7/site-packages/infix*
/usr/local/lib/python3.7/site-packages/infixpy-0.0.3-py3.7.egg
/usr/local/lib/python3.7/site-packages/infixpy.egg-link
/usr/local/lib/python3.7/site-packages/infixpy-0.0.4-py3.7.egg

Обратите внимание, что каталог infix был не создан - и, таким образом, ни один из исходного кода не был скопирован. Что я упускаю / не понимаю в этом процессе локальной установки?

Обновление Когда я запустил

  pip3 install infixpy

, там был дополнительный каталог infix и источниккод был включен в этот каталог. Запуск local или devel режимов setup.py install не приводил к обновлению этого кода и, что крайне важно, Stacktraces от запуска любого кода Python (даже в совершенно новом ipython repl)показывал только более старый / pip3 установленный код. В частности, файл __init__.py Итак, я заметил, что исходный файл:

/usr/local/lib/python3.7/site-packages/infixpy/__init__.py

является точным отражением того, что использовал исполняемый файл python. @phd упоминает, что исходный код уже включен в egg. Итак, я не понимаю взаимосвязи между исходным кодом в egg и исходным кодом в этом подкаталоге - который в моем последнем прогоне полностью отсутствует.

1 Ответ

1 голос
/ 07 ноября 2019

Все следующие команды дают слегка отличающиеся результаты:

  • pip install .: установлены как несжатые каталоги пакетов, а каталог XXX.dist-info
  • pip install infixpy: аналогично предыдущему,но устанавливается из (удаленного) индекса (по умолчанию PyPI ), а не из локального каталога
  • python setup.py install: устанавливается в виде архива XXX.egg
  • pip install --editable . или python setup.py develop: не установлен, но связан как XXX.egg-link файл

Поэтому в зависимости от введенных команд содержимое site-packages может быть другим.

Сейчасэто то, что вы говорите:

$ls  /usr/local/lib/python3.7/site-packages/infix*
/usr/local/lib/python3.7/site-packages/infixpy-0.0.3-py3.7.egg
/usr/local/lib/python3.7/site-packages/infixpy.egg-link
/usr/local/lib/python3.7/site-packages/infixpy-0.0.4-py3.7.egg```

Это немного удивительно, поскольку теоретически существует 3 версии вашего проекта, которые можно импортировать (0.0.3, 0.0.4развернуть / редактируемые ). Я не уверен, какой из них используется интерпретатором Python в этом случае. Возможно, вы захотите запустить pip uninstall infixpy пару раз, чтобы начать все заново и устранить эти неопределенности. Затем вы можете поэкспериментировать с вышеупомянутыми командами и посмотреть, как они влияют на содержимое site-packages, а также проверить результат pip show infixpy.

...