在python包中包含numpy和scipy

时间:2014-08-12 16:40:07

标签: python distutils

我想知道是否有办法在我的python模块中包含一个纯粹的python包numpy和scipy。我正在使用scipy函数loadmat来解析来自.mat文件的数据,我希望将scipy和numpy包含在一个包中,以便分布在多个操作系统中。我的第一次尝试涉及从C:\ Python27 \ Lib \ site-packages复制文件夹,并在我的setup.py中包含这些包。但是,这会导致以下运行时错误:

Traceback (most recent call last):
  File "mat2csv.py", line 9, in <module>
    import scipy.io
  File "/usr/lib/python2.7/site-packages/scipy/__init__.py", line 70, in <module>
    from numpy import show_config as show_numpy_config
  File "/usr/lib/python2.7/site-packages/numpy/__init__.py", line 175, in <module>
    from .compat import long
ImportError: cannot import name long

这是我的setup.py:

from distutils.core import setup

setup(name='mat2csv',
      version='1.2',
      description='blah',
      author='me',
      package_dir = {'' : 'src'},
      packages=['mat2csv', 'numpy', 'scipy'],
     )

使用scipy的代码:

import scipy.io 

    mat_contents = scipy.io.loadmat('mydata.mat')

1 个答案:

答案 0 :(得分:0)

你应该依赖scipy和numpy而不是试图包含它们,因为它们包含需要编译的本机扩展。

如果您需要分发多个平台,您应该看看像Anaconda这样的scipy二元分销商。

要依赖scipy / numpy,您的设置将如下所示:

from distutils.core import setup

setup(name='mat2csv',
      version='1.2',
      description='blah',
      author='me',
      package_dir = {'' : 'src'},
      packages=['mat2csv'],
      install_requires=['numpy', 'scipy']
     )