Как изменить выходной каталог distutils? - PullRequest
0 голосов
/ 06 ноября 2018

При использовании 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" работает: файл module1.c, созданный Cython, действительно находится в temp\. У меня вопрос по поводу выходного файла .pyd.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Благодаря

python setup.py build --help 

Я обнаружил, что решение заключается в использовании параметра build-lib:

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

Затем файлы .pyd будут созданы в той же папке, что и файлы Python .pyx.


В случае, если вы не хотите передавать его в качестве аргумента командной строки, это также возможно:

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

Другая альтернатива с опцией inplace, равной build_ext (она, наконец, делает то же самое):

setup(ext_modules=cythonize("module1.pyx", build_dir="build"), script_args=['build_ext'], 
                                            options={'build_ext':{'inplace':True}})
0 голосов
/ 06 ноября 2018

Используйте аргумент --dist-dir=[default: dist] опция.

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

Подробнее об упаковке здесь.

Вы можете использовать следующее: python3 setup.py sdist --dist-dir=your-dir

...