在python包中包括numpy和scipy

在python包中包括numpy和scipy,python,distutils,Python,Distutils,我想知道是否有办法在我的python模块中包含一个纯python的numpy和scipy包。我正在使用scipy函数loadmat解析.mat文件中的数据,我希望将scipy和numpy包含在一个包中,以跨多个操作系统分发。我的第一次尝试涉及从C:\Python27\Lib\site包复制文件夹,并将这些包包括在My setup.py中。但是,这会导致以下运行时错误: Traceback (most recent call last): File "mat2csv.py", line 9,

我想知道是否有办法在我的python模块中包含一个纯python的numpy和scipy包。我正在使用scipy函数loadmat解析.mat文件中的数据,我希望将scipy和numpy包含在一个包中,以跨多个操作系统分发。我的第一次尝试涉及从C:\Python27\Lib\site包复制文件夹,并将这些包包括在My 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
以及使用scipy的代码:

import scipy.io 

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

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

如果您需要为多个平台分发,您应该看看scipy的二进制分发服务器,例如Anaconda

要依赖于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']
     )

通常没有很多好的方法可以做到这一点,因为正确的做法是只在需要的地方安装这些软件包。这就是说,virtualenv可能足以满足许多用例。不幸的是,由于这些特定的软件包具有特定于操作系统的二进制文件,因此它可能无法很好地跨操作系统运行。
from distutils.core import setup

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