Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用“编译cython代码”;python compile.py“;而不是",;“建立”;命令行参数_Python_Python 2.7_Cython_Distutils - Fatal编程技术网

用“编译cython代码”;python compile.py“;而不是",;“建立”;命令行参数

用“编译cython代码”;python compile.py“;而不是",;“建立”;命令行参数,python,python-2.7,cython,distutils,Python,Python 2.7,Cython,Distutils,我有一个compile.py脚本: from distutils.core import setup from Cython.Build import cythonize setup(ext_modules = cythonize("module1.pyx")) 它编译了我的Cython代码。缺点是我必须使用命令行参数build调用它: python compile.py build 相反,我希望能够像往常一样,使用CTRL+B直接从Sublime文本调用这个compile.py。要做到这一

我有一个compile.py脚本:

from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("module1.pyx"))
它编译了我的Cython代码。缺点是我必须使用命令行参数
build
调用它:

python compile.py build
相反,我希望能够像往常一样,使用CTRL+B直接从Sublime文本调用这个
compile.py
。要做到这一点,它应该从以下位置开始工作:

python compile.py
问题:如何修改上述脚本,使其可以使用
python compile.py运行?
  • 方法#1

    像这样使用
    script\u args

    setup(ext_modules=cythonize("module1.pyx", build_dir="build"), script_args=['build'])
    

    (两者都有效)

    如果希望输出文件位于同一目录中,可以使用:

    setup(ext_modules=cythonize("module1.pyx", build_dir="build"), script_args=['build'], 
                                                options={'build':{'build_lib':'.'}})
    

  • 方法#2

    在顶部添加以下内容:

     import sys; sys.argv = ["", "build"]
    
    这有点像黑客,但它工作得很好,并且避免了创建新的构建系统,比如with(链接由@Melvin提供)

请参见:
setup(ext_modules=cythonize("module1.pyx", build_dir="build"), script_args=['build_ext'],
                                            options={'build_ext':{'inplace':True}})
 import sys; sys.argv = ["", "build"]