Как включить репо git в функцию установки setup.py, которая компилируется из исходного кода, только если пакет еще не установлен?
У меня есть команды оболочки из этого руководства по установке ). Я мог бы запустить их с OS module
, хотя как сделать команду установки pip3 надежной? Что если пользователь переименовал pip3 -> pip? Тогда моя реализация больше не будет работать.
FENICS_VERSION=$(python3 -c"import ffc; print(ffc.__version__)")
git clone --branch=$FENICS_VERSION https://bitbucket.org/fenics-project/dolfin
git clone --branch=$FENICS_VERSION https://bitbucket.org/fenics-project/mshr
mkdir dolfin/build && cd dolfin/build && cmake .. && make install && cd ../..
mkdir mshr/build && cd mshr/build && cmake .. && make install && cd ../..
cd dolfin/python && pip3 install . && cd ../..
cd mshr/python && pip3 install . && cd ../..
Фон
Это и это Вопрос / Ответ создают способ ввести пользовательские команды установки в функцию установки в setup.py через класс с методом run. Я предполагаю, что в приведенном ниже коде пользовательский скрипт установки запускается ПОСЛЕ того, как он проверяет зависимости в install_requires
.
from setuptools import setup
from setuptools.command.install import install as _install
import subprocess
class install(_install):
def run(self):
install.run(self)
## do the magic for the installation of mshr and dolfin
setup(name='myProject',
.......
install_requires=['fenics-ffc >= 2018.1.0'],
setup(cmdclass={'install': install}))