Python2.6.6环境下从指定路径导入pandas 0.16.2的方法咨询
正确导入指定路径下的pandas包
你的问题核心在于用错了加载方式——imp.load_source是用来加载单个Python模块文件(.py)的,但pandas是一个包(包含多个子模块的目录结构),直接传目录路径肯定没法完整加载所有方法。下面给你两种可靠的实现方式,优先推荐第一种:
方法一:修改sys.path(最简洁常用)
Python会在sys.path列表里的路径中查找模块,我们只需要把你的目标安装目录/myfolder添加到这个列表里,就能像正常导入pandas一样使用了:
import sys # 把目标路径插入到sys.path的最前面,确保优先加载我们指定的pandas版本 sys.path.insert(0, '/myfolder') import pandas as pd # 验证一下版本是否正确(可选) print(pd.__version__) # 应该输出0.16.2
这样导入后,pd变量就会包含pandas的所有方法,和你全局安装的pandas用法完全一致。
方法二:使用importlib动态加载(适合复杂场景)
如果不想修改全局的sys.path,可以用importlib模块来手动指定包的位置加载,步骤稍繁琐,但更灵活:
import importlib.util import sys # 指向pandas包的__init__.py文件路径 pandas_init_path = "/myfolder/pandas/__init__.py" # 创建模块规格 spec = importlib.util.spec_from_file_location("pandas", pandas_init_path) # 根据规格创建模块对象 pandas = importlib.util.module_from_spec(spec) # 把模块注册到sys.modules,避免后续导入冲突 sys.modules["pandas"] = pandas # 执行模块代码完成加载 spec.loader.exec_module(pandas) pd = pandas # 同样可以验证版本 print(pd.__version__)
为什么你的原代码不行?
你之前写的imp.load_source('pandas.name','/mnt/gfsusr/software/python_modules/pandas'),第二个参数传的是pandas的目录,而load_source需要的是单个.py文件的路径。它没法递归加载整个包的所有子模块,所以最终得到的pd不是完整的pandas对象,自然缺少方法。
内容的提问来源于stack exchange,提问作者vinay kusuma
相关产品推荐
相关产品推荐

