python cmd error: invalid command 'y'

python cmd error: invalid command 'y'

Python - 解析以下命令行参数时...

sys.argv = ('%s %s build_ext --inplace' % ('python', sys.argv[0]))

...对于我的构建脚本中的 Cython "myscript_pyd_setup.py" for "myscript.pyd" 使用 "myscript.py" 文件我收到以下错误 (e1):

python error 1: invalid command 'y'

pythoncommand-line optionpython -- help显示没有对应的选项'y'。这是有道理的,否则错误将不存在。搜索 SO、Python 文档和网络得到了关于 Tkinter 的无关文章。据我所知,我对 Tkinter 什么也没做,我想知道这个错误是否完全来自 python 命令行解释器?

我的努力:

我试图完成的是在编辑器中 运行ning "buildscript" 时将参数 sys.argv.append('build_ext --inplace') 解析为 python 命令行解释器(Komodo edit 11.x) 但它 returns 也有一个错误 (e2) 类似于来自命令行或其他编辑器的版本。

python error 2: invalid command name 'build_ext --inplace'

运行 "myscript_pyd_setup.py" 和 sys.argv.append('build_ext') 构建所需的 *.pyd 文件就好了。我不明白的是为什么它在 --infile 上令人窒息。这适用于 py2exepyinstaller.

objective:

从编辑器中 运行 "myscript.py" 的设置脚本,而不必来回切换到命令行编辑器来编译 *.py > *.pyd当我更改 "myscript.py" 中的代码并希望快速查看结果时。

Note: parsing command-line python myscript_pyd_setup.py build_ext --inplace works fine when sys.argv... is commented-out in the "buildscript"!

第三个选项是将 cythonize 与 "myscript.py" 和 "myscript.pyd" 文件结合使用,但显示 "myscript.pyd" 的复制文件错误。相关但与上述 "error = 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)

sys.argv 是参数列表。当您追加 'build_ext --inplace' 时,您实际上是将其作为单个参数追加(就好像您从 shell 命令行将其用引号引起来一样)。第二种情况就是这样。

在第一个中,您已将字符串分配回 sys.argv。但是字符串也是一个序列,所以你的命令 运行 就好像用 (argv[1:]): ['y', 't', `h`, ...]

在任何一种情况下,您最终都会得到一个 option/sub-command 未知的参数解析器。