Объяснение пакетов сайта Python. Я положил туда свои библиотеки? - PullRequest
4 голосов
/ 25 октября 2011

Недавно я наткнулся на новый проект с Python в качестве базы кода.Я никогда не делал Python раньше - из мира скомпилированного кода на C / C ++.Я сталкиваюсь с некоторыми проблемами, понимающими мою текущую кодовую базу.

Когда мы пишем код, у нас есть наши библиотеки (компоненты, которые являются более общими, чем другой код), и код нашего приложения (код, который применяет библиотеку), верно?В проектах, над которыми я работал ранее, я бы держал код библиотеки и приложение в отдельных папках в одной папке проекта.На земле C / C ++ был бы make-файл (или некоторая make-система), который соединяет все вместе, чтобы все включенные работали должным образом.

    Project/
           Library/
                   Utilities.cpp
           Application/
                   Main.cpp
           makefile

Проект, на который я сейчас иду, имеет свой собственная библиотека в папке site-packages, которая сама находится в системной папке IronPython / Python.Этот библиотечный код принадлежит нам, и он все еще «горячий» и над ним ведется работа.Код приложения находится в другом месте системы.

Кажется, что это плохой дизайн, но мои коллеги настаивают на том, что "именно так работает Python".Python поддерживает включение / импорт.Разве все не должно быть самодостаточным?Кажется странным разбрасывать такой код.

Спасибо!

Ответы [ 3 ]

7 голосов
/ 25 октября 2011

Библиотеки Python обычно устанавливаются через distutils или setuptools .Эти утилиты устанавливают библиотеки в папку site-packages python, где python знает, как искать библиотеки, когда встречается оператор import x.

Разработка кода непосредственно в папке site-packages кажется немного странной,хотя технически в этом нет ничего плохого.Обычно у вас будет что-то вроде этого:

./app1.py
./lib1/__init__.py
./lib1/lib1.py
./lib2/__init__.py
./lib2/lib2.py
...etc

А затем, когда вы будете готовы упаковать библиотеки, вы можете использовать один из вышеупомянутых утилит для этого (который затем установит библиотекив site-packages).

Итак, чтобы ответить на ваш вопрос: нет жесткого и быстрого правила.Я думаю, что большинство разработчиков Python не одобряют разработку непосредственно в site-packages.

* В программе Setuptools также есть команда develop, которая устанавливает ссылку на вашу библиотеку разработки в site-packages.Я использовал это несколько раз с хорошими результатами.

2 голосов
/ 25 октября 2011

Обычно сторонние библиотеки добавляются в site-пакеты с помощью установщика, например pip , * easy_install * или distutils с использованием setup.py .Для локально разработанных «горячих библиотек», находящихся в стадии разработки, они обычно имеют свое собственное дерево каталогов, и python.exe находит их, используя переменную среды PYTHONPATH (используется для установки sys.путь ).

0 голосов
/ 25 октября 2011

Легко импортировать эти библиотеки с помощью Eclipse. Установите Easy_install и импортируйте все эти библиотеки из командной строки. Теперь в Eclipse, просто свяжите эти библиотеки, в ваших предпочтениях и wola! Вы готовы GO!

...