我想創建一個setup.py
文件,該文件自動將構建時間依賴性解析爲numpy(用於編譯擴展)。我的第一個猜測是使用setup_requires
和子命令類導入numpy的模塊:爲什麼setup_requires不能正常工作numpy?
from setuptools import setup, Extension
from distutils.command.build import build as _build
class build(_build):
def run(self):
import numpy
print(numpy.get_include())
_build.run(self)
setup(
name='test',
version='0.0',
description='something',
cmdclass={'build':build},
setup_requires=['numpy'],
)
現在,運行python setup.py build
編譯成功numpy的,但隨後失敗(內部build.run
)有:
AttributeError: 'module' object has no attribute 'get_include'
然而,如果再次運行相同的命令,該命令現在成功(並且不需要重新編譯numpy)。
我已經在python {2.6,2.7,3.3}上測試了這個,在最近的版本setuptools上有和沒有virtualenv。
我看到一個workaround using pkg_resources.resource_filename這似乎工作得很好,如果我們只想要的是包括目錄。 編輯:只適用於python2!
但是,我現在好奇。 setup_requires
的用法有哪些注意事項?可能是因爲它不能正常工作的原因是什麼?對於一些更簡單的模塊,它似乎沒有問題。