使用 "python compile.py" 且没有 "build" 命令行参数编译 cython 代码
Compile cython code with "python compile.py" and no "build" command-line parameter
我有一个 compile.py 脚本:
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("module1.pyx"))
编译我的 Cython 代码。缺点是我必须使用命令行参数 build
:
来调用它
python compile.py build
相反,我希望能够像往常一样直接从 Sublime Text 调用此 compile.py
,使用 CTRL+B。为此,它应该从以下位置开始工作:
python compile.py
问题:如何修改上面的脚本,使其可以运行和python compile.py
?
方法#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(link 由@Melvin 友情提供)。
我有一个 compile.py 脚本:
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("module1.pyx"))
编译我的 Cython 代码。缺点是我必须使用命令行参数 build
:
python compile.py build
相反,我希望能够像往常一样直接从 Sublime Text 调用此 compile.py
,使用 CTRL+B。为此,它应该从以下位置开始工作:
python compile.py
问题:如何修改上面的脚本,使其可以运行和python compile.py
?
方法#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(link 由@Melvin 友情提供)。