Python — при анализе следующих аргументов командной строки...
sys.argv = ('%s %s build_ext --inplace' % ('python', sys.argv[0]))
... для Cython внутри моего скрипта сборки "myscript_pyd_setup.py" для "myscript.pyd", который использует файл "myscript.py", я получаю следующую ошибку (e1):
ошибка python 1: неверная команда 'y'
опция командной строки python -- help
не обнаружила соответствующей опции 'y'. Это имеет смысл, иначе ошибки бы не было. Поиск в SO, документации по Python и в Интернете привел к несвязанным статьям о Tkinter
. Поскольку я абсолютно ничего не делаю с Tkinter, насколько мне известно, мне интересно, связана ли эта ошибка с интерпретатором командной строки python вообще?
Мои усилия:
Я пытался выполнить синтаксический анализ аргументов sys.argv.append('build_ext --inplace')
для интерпретатора командной строки python при запуске «buildscript» из редактора (Komodo edit 11.x), но он также возвращается с ошибкой (e2), аналогичной версии из командной строки. или другой редактор.
ошибка python 2: неверное имя команды 'build_ext --inplace'
Запуск "myscript_pyd_setup.py" с sys.argv.append('build_ext')
прекрасно создает требуемый файл *.pyd. Чего я не понимаю, так это почему он задыхается от --infile
. Это работает для py2exe
и pyinstaller
.
Цель:
Чтобы запустить сценарий установки «myscript.py» из редактора и не переключаться туда-сюда в редакторе командной строки для компиляции *.py> *.pyd, когда я изменил код внутри «myscript.py " и хотите быстро увидеть результат.
Примечание: синтаксический анализ командной строки
python myscript_pyd_setup.py build_ext --inplace
работает нормально, когдаsys.argv...
закомментирован в "скрипте сборки"!
Третий вариант заключался в использовании cythonize
в сочетании с файлами «myscript.py» и «myscript.pyd», но это показало ошибку файла копирования для «myscript.pyd». Актуально, но не для заданного выше вопроса «ошибка = y».
Любые мысли и помощь в том, как автоматизировать эту часть, чтобы предотвратить RSI, более чем приветствуются! Спасибо.
Мой пример кода "myscript.py":
import sys, time, os
#...snippet...
def print_me():
text = "bar(man), yes, Hello, how do you do Mr. foo?"
return text
if __name__ == '__main__':
#...snippet...
print_me()
Myscript_pyd_setup.py:
# myscript.py
try:
from setuptools import setup
from setuptools import Extension
except ImportError:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
#from Cython.Build import cythonize
import sys
print 'sys.argv[0] : %s' % sys.argv[0]
#sys.argv = ('%s %s build_ext --inplace' % ('python', sys.argv[0]))
sys.argv.append('build_ext --inplace')
ext_modules = [Extension("myscript",['myscript.py'])]
#ext_modules = cythonize("myscript.py")
#setup: "name" and "cmdclass" are commented-out when using cythonize.
setup(
name= 'XYZ model class',
cmdclass = {'build_ext': build_ext},
include_dirs = [],
ext_modules = ext_modules)