2017-05-10 20 views
15

के साथ स्थापित करें, मैं स्थापना समय पर एक पायथन फ़ाइल जेनरेट करना चाहता हूं।पायथन पैकेजिंग: स्थापना समय पर एक पायथन फ़ाइल जेनरेट करें, इस काम को टोक्स

मैं यह काम python setup.py develop, python setup.py install और pip install दोनों के साथ चाहता हूं। अब तक सब ठीक है।

हालांकि मैं यह भी टोक्स के साथ काम करना चाहता हूं। यह वह जगह है जहां मुझे समस्याएं आ रही हैं।

# 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 मेरे स्रोत से भाग रहा है:

दृष्टिकोण मैं का उपयोग कर develop और install आदेशों बदलाव करने तो जैसे setup.py में स्रोत कोड उत्पन्न करने के लिए है कोड और जादू ब्लैकबॉक्स tox दर्शाता है कि यह क्या हो रहा है यह जानने के लिए क्रूरतापूर्ण बनाता है।

समस्या इस voodoo जादू के लिए नीचे प्रतीत होती है जो setup.py में खींचती है इसे किसी कारण से exec .... के माध्यम से चलाती है।

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/ 

बातें मैं कोशिश की है:

  • साथ -v -v -v -v
  • रनिंग पिप आदेश मैन्युअल
  • एक pdb.set_trace (आदेश रुक जाता है और मैं जोड़ना Reruning आउटपुट नहीं देखें)
  • आईपीथॉन खोल जोड़ना (ipython इंस्टॉल_required में भी स्थापित नहीं है)
  • एक strace -F चल रहा है इस से पता चलता है कि setup.py स्रोत कोड के लिए उम्मीद स्थान सापेक्ष में वास्तव में है

बातें मैं कोशिश कर रहा पर विचार किया है:

  • रन टाइम पर एक नेटवर्क पिछले दरवाजे खोल (बनाना बहुत आलसी)
+0

पीईपी 263 को परिभाषित करने के लिए टोक्स विरासत दुभाषिया समर्थन की तरह दिखता है ('टोकनइज.ओपेन' निहित रूप से 'detect_encoding' कहता है) और एमएस न्यूलाइन को * निक्स न्यूलाइन में बदलता है। मैं कहूंगा कि यह पीआईपी के बीच एक मुद्दा है (मुझे लगता है कि यह 'पीआईपी - * - बिल्ड' डीआईआरएस का निर्माण कर रहा है) टोक्स को सौंप रहा है? – cowbert

+0

मुझे लगता है कि आप परीक्षण के लिए टोक्स का उपयोग करना चाहते हैं, तो क्या tox.ini फ़ाइल में 'usedevelop = True' निर्दिष्ट करने में समस्या होगी? यह एक कामकाज का अधिक है, लेकिन यह आपके उपयोग के मामले के लिए पर्याप्त हो सकता है। – bow

उत्तर

0

tox.ini अपनी परियोजना के -file में, आप commands जोड़ सकते हैं होने के लिए परीक्षण वातावरण में भागो। एक साधारण उदाहरण इस तरह कुछ दिखता है:

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

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

क्या आपके लिए टोक्स बनाने के लिए एक आदेश जोड़ने के लिए संभव है? (आदेश वातावरण में से प्रत्येक के लिए चलाया जाएगा)।

संबंधित मुद्दे