如何更改distutils的输出目录?

时间:2018-11-06 13:52:57

标签: python cython setuptools distutils

在将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文件。

2 个答案:

答案 0 :(得分:2)

使用参数pip选项。

user1@sv1:~$ python
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016,12:22:00) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.

>>> from google.cloud import bigquery

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
File "/home/user1/miniconda3/lib/python3.6/site-packages/google/cloud/bigquery/__init__.py", line 34, in <module>
from google.cloud.bigquery.client import Client
File "/home/user1/miniconda3/lib/python3.6/site-packages/google/cloud/bigquery/client.py", line 32, in <module>
import google.cloud._helpers

Read more about packaging here.

您可以使用以下内容: --dist-dir=[default: dist]

答案 1 :(得分:2)

感谢

python setup.py build --help 

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

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

然后,将在.pyx Cython文件所在的文件夹中创建.pyd文件。


如果您不想将其作为命令行参数传递,也可以这样做:

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

具有inplace的{​​{1}}选项的另一种选择(最终效果相同):

build_ext