【问题标题】:Compile cython code with "python compile.py" and no "build" command-line parameter使用“python compile.py”编译 cython 代码且没有“build”命令行参数
【发布时间】:2018-11-06 12:23:30
【问题描述】:

我有一个 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 Text 调用此 compile.py。为此,它应该从以下位置工作:

python compile.py

问题:如何修改上面的脚本,使其可以用python compile.py运行?

【问题讨论】:

标签: python python-2.7 cython distutils


【解决方案1】:
  • 方法#1

    像这样使用script_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_ext'])
    

    (两者都有效)。

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

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

    setup(ext_modules=cythonize("module1.pyx", build_dir="build"), script_args=['build_ext'],
                                                options={'build_ext':{'inplace':True}})
    
  • 方法#2

    在上面添加这个:

     import sys; sys.argv = ["", "build"]
    

    这有点hack-ish,但它工作正常,并且避免了必须创建一个新的构建系统,比如Build and run with arguments in Sublime Text 2(链接由@Melvin 友情提供)。

【讨论】:

    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2012-03-15
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多