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会让我窒息。这适用于py2exe和pyinstaller。
目标:
若要从编辑器中运行"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“示例代码:
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)发布于 2018-02-05 09:52:21
sys.argv是一个参数列表。在追加'build_ext --inplace'时,您实际上是将其附加为单个参数(就好像您已将其包含在shell命令行的引号中)。这就是第二个案例中发生的情况。
在第一个例子中,您已经将字符串分配给sys.argv。但是字符串也是序列,所以命令运行时就像调用(argv[1:]):['y', 't', `h`, ...]一样
在任何一种情况下,您最终都会得到一个选项/子命令,不知道参数解析器。
https://stackoverflow.com/questions/48584788
复制相似问题