Python引用其他模块之sys.path

在编写代码时,有时候会导入系统自带模块,有时候要导入自己定义的模块。这与windows/Linux中的环境变量类似。Python解释器会有一个默认的目录(sys.path),在解释器执行时,会从这个默认的目录里去寻找引用的模块。

查看解释器寻找模块的默认目录

>>> import sys
>>> sys.path
['', 'F:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'F:\\Python27\\DLLs', 'F:\\Python27\\lib', 'F:\\Python27\\lib\\plat-win', 'F:\\Python27\\lib\\lib-tk', 'F:\\Python27', 'C:\\Users\\gcfeng\\AppData\\Roaming\\Python\\Python27\\site-packages', 'F:\\Python27\\lib\\site-packages', 'F:\\Python27\\lib\\site-packages\\win32', 'F:\\Python27\\lib\\site-packages\\win32\\lib', 'F:\\Python27\\lib\\site-packages\\Pythonwin']

可见默认目录存放在一个列表里面。所以,如果自己引用的模块A不再上述目录中,把模块A的路径追加到sys.path路径中就可以了
(模块的绝对路径:O:\crazylab\PycharmProjects\test_learn\get_param)

>>> sys.path.append('O:\crazylab\PycharmProjects\test_learn')
>>> import get_param

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    import get_param
ImportError: No module named get_param

为什么导入后还是找不到呢?看看sys.path里面都有什么:

>>> sys.path
['', 'F:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'F:\\Python27\\DLLs', 'F:\\Python27\\lib', 'F:\\Python27\\lib\\plat-win', 'F:\\Python27\\lib\\lib-tk', 'F:\\Python27', 'C:\\Users\\gcfeng\\AppData\\Roaming\\Python\\Python27\\site-packages', 'F:\\Python27\\lib\\site-packages', 'F:\\Python27\\lib\\site-packages\\win32', 'F:\\Python27\\lib\\site-packages\\win32\\lib', 'F:\\Python27\\lib\\site-packages\\Pythonwin', 'O:\\crazylab\\PycharmProjects\test_learn']

看最后一行:’O:\crazylab\PycharmProjects\test_learn’,可以发现是test_learn前少了一个反斜杠:

'O:\\crazylab\\PycharmProjects\test_learn' --这个是错的
'O:\\crazylab\\PycharmProjects\\test_learn' -- 这个是对的

应该是由于\t恰好是一个字符且没有转义过来,因此在填写windows路径的时候强烈建议要用双斜杠(\\),以避免未预料到的错误。改成双斜杠,可以导入成功(导入后不报错):

>>> sys.path.append('O:\\crazylab\\PycharmProjects\\test_learn')
>>> import get_param
>>> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值