我想知道是否有办法在我的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')
答案 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']
)