2017-05-10 14 views
15

설치시 파이썬 파일을 생성하고 싶습니다.파이썬 패키징 : 설치시 파이썬 파일 생성하기, 독극물로 작업하기

python setup.py develop, python setup.py installpip install 모두와 함께이 작품을 원합니다. 여태까지는 그런대로 잘됐다.

그러나이 또한 tox과 함께 사용하기를 원합니다. 이것은 내가 문제가있는 곳입니다.

# 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' 
) 

그러나 설치 tox의 방법은 어떻게 든 멀리 내 소스에서 setup.py을 실행하는 것을 : 내가 사용

접근 방식은과 같이 setup.py에서 소스 코드를 생성 할 수 developinstall 명령을 조정할 것입니다 코드와 tox이 나타내는 마법 블랙 박스는 일이 벌어지는 것을 해결하기 위해 분노를 불러 일으 킵니다.

exec을 통해 setup.py을 실행하는이 부두교 마법에 문제가있는 것 같습니다. 웬일인지.

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/ 

것들 나는 시도했다 :

  • 수동
  • pdb.set_trace (명령이 중단 및 I 추가 핍 명령을 Reruning -v -v -v -v
  • 으로 실행 출력이 보이지 않음)
  • ipython 셸 추가 (install_required에 ipython이 설치되어 있지 않음)
  • (210)
  • strace -F 실행이 setup.py 소스 코드에 예상되는 상대적인 위치에 실제로 것을 보여준다

것들 내가하려고 생각했습니다

  • 런타임에 네트워크 백도어 쉘 (만들기 프로젝트의 tox.ini - 파일에서
+0

PEP 263을 처리하기 위해 tox legacy interpreter 지원 ('tokenize.open'은 암시 적으로'detect_encoding')을 정의하고 MS 개행 문자를 * nix 개행 문자로 변경합니다. 나는 이것이 pip (pip - * - build dirs를 mktemping하는 것으로 가정) 사이의 문제라고 말하고 싶다. – cowbert

+0

테스트를 위해 tox를 사용하고 싶다면 tox.ini 파일에'usedevelop = True'를 지정하는 것이 문제가됩니까? 이것은 좀더 해결 방법이지만, 사용 사례로도 충분할 수 있습니다. – bow

답변

0

, 당신이되고 commands을 추가 할 수 있습니다) 너무 게으른 테스트 환경에서 실행됩니다. 간단한 예제는 다음과 같습니다.

[tox] 
envlist = py27,py34,py35,py36 

[testenv] 
deps= 
    pytest 
    ; ... other dependencies 
commands= 
    pytest --basetemp={envtmpdir} {posargs} 
    ; Add your command here? 

원하는 명령을 추가 할 수 있습니까? 이 명령은 각각 환경의 에 대해 실행됩니다.