python - distutils setup.py install - 'module' 对象不可调用

标签 python distutils setup.py

我正在尝试使用特定的 python/numpy 库 rmcgibbo/logsumexp ,但无法安装。这是我按照说明运行 setup.py install 时的跟踪:

$ python setup.py install
running install
running build
running build_ext
Traceback (most recent call last):
  File "setup.py", line 26, in <module>
    ext_modules = [ext]
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/install.py", line 573, in run
    self.run_command('build')
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build.py", line 127, in run
    self.run_command(cmd_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 970, in run_command
    cmd_obj = self.get_command_obj(command)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 846, in get_command_obj
    cmd_obj = self.command_obj[command] = klass(self)
TypeError: 'module' object is not callable

Contents of setup.py

问题可能是什么?

最佳答案

您正在导入 build_ext 模块,但未指定该模块中的可调用内容。您真正想要做的是将 try block 中的内容更改为:

try:
    from Cython.Distutils.build_ext import build_ext
    src = ['sselogsumexp.pyx', 'src/logsumexp.c']
except ImportError:
    from distutils.command.build_ext import build_ext
    src = ['sselogsumexp.c', 'src/logsumexp.c']

我使用 distutils.command.build_ext 模块对此进行了测试。如果您查看该模块,您会注意到有一个名为 build_ext 的类,因此为了调用“可调用”,您需要按照我的示例中指定的方式导入。我运行了 setup.py 并更改了代码,它成功了。

关于python - distutils setup.py install - 'module' 对象不可调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32628134/

相关文章:

python - GAE处理请求后不释放内存?

python - distutils.core 与带有 C++ 扩展的 setuptools

python - pypi信息显示在错误的地方

python - 每个 python 程序都应该与 setup.py 一起分发吗?

centos - 使用 cx_freeze 时出错

python - 根据属性之和将数组拆分为数组数组

python - 将多维数组中的元素映射到其索引

python - __pycache__ 是跨平台的吗?

python - 使用 60% 0's and 40% 1' s 生成虚拟数据

python - 如何从可从 Python 使用的 C 或 C++ 代码创建 make .so 文件