2013-06-02 4 views
4

Я пишу и поддерживаю библиотеку Python для вычислений квантовой химии под названием PyQuante. У меня довольно стандартный дистрибутив Python с файлом setup.py в основной директории, подкаталог под названием «PyQuante», который содержит все модули Python и один называется «Src», который содержит исходный код для модулей расширения C.Где я могу поместить мои файлы cython в дистрибутив python?

Мне повезло, что некоторые пользователи пожертвовали код, который использует Cython, которого я раньше не использовал, так как я начал PyQuante, прежде чем он или Pyrex существовали. По моему предложению, они поместили код в подкаталог Src, так как там все коды C пошли.

Однако, глядя на код, который генерирует расширения, я задаюсь вопросом, следует ли просто поместить код в подкаталоги ветки Python. И, таким образом, мой вопрос:

Каковы наилучшие практики для структуры каталогов дистрибутивов python с исходными файлами Python и Cython?

  • Вы помещаете файлы .pyx в тот же каталог, что и файлы .py?
  • Вы помещаете их в подкаталог того, который содержит файлы .py?
  • Вы помещаете их в дочерний элемент родительского каталога .py?

Является ли тот факт, что я даже задаю этот вопрос, предает мое незнание при распространении .pyx-файлов? Я уверен, что есть много способов сделать эту работу, и я в основном обеспокоен тем, что лучше всего работает для людей.

Спасибо за любую помощь, которую вы можете предложить.

+0

[Это сообщение] (http://stackoverflow.com/questions/4505747/how-should-i-structure-a-python-package-that-contains-cython-code?rq=1) (который я только найденный после отправки моего собственного), дает один ответ. Это то, что люди считают «лучшей практикой»? – Rick

+0

Также ознакомьтесь с этим [разделом документации] (http://docs.cython.org/src/reference/compilation.html#distributing-cython-modules), описывающим, как распределять пакеты, которые используют Cython. – Will

ответ

2

Внесение .pyx-файлов в тот же каталог, что и .py-файлы, имеет для меня наибольший смысл. Это сделали авторы scikit-learn и что я сделал в своем модуле py-earth. Думаю, я думаю о модулях Cython в качестве оптимизированных замен для модулей Python. Я часто начинаю с написания пакета в чистом Python, а затем заменяю некоторые модули Cython, если мне нужна более высокая производительность. Поскольку я рассматриваю модули Cython как замены для модулей Python, мне разумно держать их в одном месте. Он также хорошо работает для тестовых построений с использованием аргумента --inplace.

+0

Спасибо. Я беспокоюсь о том, что все помешаю, если я положу файлы pyx и py в один и тот же каталог (но я предполагаю, что учащиеся, изучающие scikit, знают, что они делают). Тем не менее, размещение вещей в отдельном каталоге несколько путается с носетистами. – Rick

Смежные вопросы