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