Пакет Python с скомпилированным кодом - PullRequest
3 голосов
/ 10 марта 2010

Я планирую выпустить пакет Python, который включает в себя существующую программу на Fortran или Си. Программа на языке fortran / C компилируется с помощью команды

./configure
make

Код Python вызывает полученный двоичный файл с помощью вызовов подпроцесса (то есть код на самом деле не упакован как таковой). Я хотел бы, чтобы пользователь набрал

python setup.py install

программа fortran / C сначала компилируется с использованием команд ./configure и make, затем я хочу установить модуль python и установить двоичный файл в каталог python bin/ вместе с исполняемыми файлами, которые обычно устанавливается через опцию scripts= в distutils.core.setup.

Во-первых, есть ли проблемы с этим? А если нет, как лучше всего это сделать через setup.py? Существуют ли функции для автоматизации ./configure и make, так как это довольно стандартно? Или я должен просто использовать os.system звонки? И в любом случае, куда эти команды должны идти в setup.py? Тогда я должен make вывести двоичный файл, например, на scripts/ и затем scripts=['scripts/mybinary'] в функции setup()?

Ответы [ 2 ]

2 голосов
/ 10 марта 2010

Не делайте это слишком сложным.

Просто предоставьте их в виде отдельных предметов с README, в котором говорится - в основном - то, что вы сказали в вопросе.

  1. Постройте Фортран / C с ./configure; make; make install.

  2. Настройка Python с помощью python setup.py install.

Это не похоже на ракетостроение. Попытка чрезмерно упростить установку означает, что вы должны учитывать причуды и странности каждой ОС.

Проще доверять пользователям выполнение «стандартных» установок, чтобы Fortran / C находился в системной переменной PATH, а ваш сценарий Python должен быть настроен для их поиска в системной переменной PATH.

Люди, которые хотят использовать ваше программное обеспечение, могут свободно перенастроить его под свои уникальные потребности. Они будут в любом случае. Не переупаковывайте и заставляйте их сражаться против вас, чтобы переконфигурировать вещи.

0 голосов
/ 10 марта 2010

рассмотрите возможность написания расширения Python C в качестве оболочки для вашего кода C и расширения f2py в качестве оболочки для вашего кода Fortran. Тогда вы можете просто использовать их в своем коде Python как быстрые вызовы вместо использования подпроцесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...