首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python错误:无效命令'y‘

python错误:无效命令'y‘
EN

Stack Overflow用户
提问于 2018-02-02 14:27:25
回答 1查看 1.3K关注 0票数 0

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

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

...for Cython在我的构建脚本"myscript_pyd_setup.py“中使用"myscript.py”文件表示“myscript.py”,得到以下错误(e1):

python错误1:无效命令'y‘

python 命令行选项 python -- help没有发现相应的选项'y‘。这是有意义的,否则错误将不存在。通过搜索,Python和web生成了与Tkinter无关的文章。因为我对Tkinter完全不做任何事情,据我所知,我想知道这个错误是否来自python命令行解释器?

我的努力:

我试图完成的是在编辑器(KomodoEdit11.x)中运行"buildscript“时将参数sys.argv.append('build_ext --inplace')解析为python命令行解释器,但它也返回一个错误(e2),类似于命令行或另一个编辑器的版本。

python 2:无效命令名'build_ext --inplace‘

使用myscript_pyd_setup.py运行“sys.argv.append('build_ext')”可以生成所需的*.pyd文件。我不明白的是,为什么--infile会让我窒息。这适用于py2exepyinstaller

目标:

若要从编辑器中运行"myscript.py“的安装脚本,并且当我在"myscript.py”中更改代码并希望快速查看结果时,不必来回切换到命令行编辑器以编译*.py > *.pyd。

备注:当sys.argv...在"buildscript“中被注释掉时,解析命令行python myscript_pyd_setup.py build_ext --inplace工作得很好!

第三种选择是将cythonize与"myscript.py“和"myscript.pyd”文件组合使用,但这显示了"myscript.pyd“的文案错误。与上述问题相关,但不适用于"error = y“问题。

任何想法和帮助,如何自动化这部分,以防止RSI是非常欢迎!谢谢。

我的"myscript.py“示例代码:

代码语言:javascript
复制
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:

代码语言:javascript
复制
# 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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-05 09:52:21

sys.argv是一个参数列表。在追加'build_ext --inplace'时,您实际上是将其附加为单个参数(就好像您已将其包含在shell命令行的引号中)。这就是第二个案例中发生的情况。

在第一个例子中,您已经将字符串分配给sys.argv。但是字符串也是序列,所以命令运行时就像调用(argv[1:]):['y', 't', `h`, ...]一样

在任何一种情况下,您最终都会得到一个选项/子命令,不知道参数解析器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48584788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档