【问题标题】:How to change distutils' output directory?如何更改 distutils 的输出目录?
【发布时间】:2019-04-09 22:18:29
【问题描述】:

python setup.py build 与此代码一起使用时:

import setuptools
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("module1.pyx", build_dir="temp"))

.pyd 库在.\build\lib.win-amd64-2.7\module1.pyd 中生成。

如何将输出的.pyd文件改为当前文件夹.

注意:cythonize 参数build_dir="temp" 有效:cython 生成的module1.c 文件确实在temp\ 中。我的问题是关于输出 .pyd 文件。

【问题讨论】:

    标签: python cython setuptools distutils


    【解决方案1】:

    使用参数--dist-dir=[default: dist] 选项。

      --dist-dir (-d)   directory to put the source distribution archive(s) in
                        [default: dist]
    

    Read more about packaging here.

    您可以使用以下内容: python3 setup.py sdist --dist-dir=your-dir

    【讨论】:

    • 你不能在setup()中使用dist_dir;你看过我附上的包装文件了吗?
    • 您没有运行正确的命令;你需要运行:python setup.py sdist --dist-dir=.
    • 我已经看过这个包装文档@JulianCamilleri,但是dist-dir 不适用于带有build 的Cython 库。请参阅我的其他答案。
    • 很高兴您找到了答案! :)
    • 感谢您,我找到了它,您为我指出了正确的位置(命令行参数):) +1 为您的回答!
    【解决方案2】:

    感谢

    python setup.py build --help 
    

    我发现解决方法是使用参数build-lib

    python setup.py build --build-lib=.
    

    然后 .pyd 文件将创建在与 .pyx Cython 文件相同的文件夹中。


    如果您不想将其作为命令行参数传递,这也是可能的:

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

    build_extinplace 选项的另一种选择(它最终也是如此):

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

    【讨论】:

      猜你喜欢
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      • 2013-04-21
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      相关资源
      最近更新 更多