para paquetes librerias libreria instalar descargar python build code-generation setuptools tox

paquetes - Empaquetado Python: Genere un archivo python en el momento de la instalación, haga que este funcione con tox



instalar pip python windows (1)

En el archivo tox.ini de su proyecto, puede agregar comandos para que se ejecuten en los entornos de prueba. Un ejemplo simple se ve así:

[tox] envlist = py27,py34,py35,py36 [testenv] deps= pytest ; ... other dependencies commands= pytest --basetemp={envtmpdir} {posargs} ; Add your command here?

¿Es posible que agregue un comando para hacer que Tox haga lo que quiera? (El comando se ejecutará para cada uno de los entornos).

Quiero generar un archivo python en el momento de la instalación.

Quiero que esto funcione con python setup.py develop , python setup.py install y pip install . Hasta aquí todo bien.

Sin embargo, también quiero que esto funcione con tox . Aquí es donde estoy teniendo problemas.

El enfoque que uso es modificar los comandos de develop e install para generar el código fuente en setup.py de la siguiente manera:

# make code as python 3 compatible as possible from __future__ import absolute_import, division, print_function, unicode_literals import subprocess import setuptools import os.path import distutils.core from setuptools.command.develop import develop from setuptools.command.install import install # Build anltr files on installation # this is such a mess... it looks like there are # no common steps to develop and install class AntlrDevelopCommand(develop): def run(self): compile_grammar() develop.run(self) class AntlrInstallCommand(install): def run(self): compile_grammar() install.run(self) def compile_grammar(): here = os.path.dirname(__file__) or ''.'' package_dir = os.path.join(here, ''latex2sympy'') subprocess.check_output([''antlr4'', ''PS.g4'', ''-o'', ''gen''], cwd=package_dir) setuptools.setup( name=''latex2sympy'', version=0.1, author=''august.codes'', author_email=''[email protected]'', description=''Parse latex markup into sympy: suitable for programmatic modifcation'', license=''GPLv3'', keywords=''MIT'', url='''', packages=[''latex2sympy''], classifiers=[ ], install_requires=[''antlr-ast'', ''sympy''], cmdclass=dict( install=AntlrInstallCommand, develop=AntlrDevelopCommand), test_suite=''nose.collector'' )

Sin embargo, el método de instalación de setup.py alejar de alguna manera setup.py de mi código fuente y la caja negra mágica que representa tox hace que resulte exasperante averiguar qué está pasando.

El problema parece deberse a esta magia vudú que se setup.py en setup.py ejecuta a través de un exec ... por alguna razón.

Command "/home/tom/active/latex2sympy/.tox/py35/bin/python3.5 -u -c "import setuptools, tokenize;__file__=''/tmp/pip-e698cucb-build/setup.py'';f=getattr(tokenize, ''open'', open)(__file__);code=f.read().replace(''/r/n'', ''/n'');f.close();exec(compile(code, __file__, ''exec''))" install --record /tmp/pip-lu2idbzz-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/tom/active/latex2sympy/.tox/py35/include/site/python3.5/latex2sympy" failed with error code 1 in /tmp/pip-e698cucb-build/

Cosas que he intentado:

  • Corriendo con -v -v -v -v
  • Volver a ejecutar el comando pip manualmente
  • Agregar un pdb.set_trace (comando cuelga y no veo salida)
  • Agregar un shell ipython (ipython no instalado incluso cuando está en install_required)
  • Ejecutando una strace -F esto muestra que setup.py está de hecho en la ubicación esperada relativa al código fuente

Cosas que he considerado intentar:

  • Crear un shell de puerta trasera de red en tiempo de ejecución (demasiado flojo)