pycharm 导入自定义模块提示 no module name

pycharm 导入自定义模块提示 no module named

参考链接
http://blog.csdn.net/pwc1996/article/details/52577148

问题描述

在 pycharm 的 terminal 界面执行某脚本的时候,提示:

ImportError: No module named '*******'

但是在 pycharm 直接运行文件是可以执行的,不会报错。

原因在于 pycharm 和 python3.5 默认的模块导入目录不一样。

  • 系统默认的 path
>>> import sys
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']
  • 在 pycharm 中创建一个文件
    test.py
import sys
print(sys.path)

输出结果:

['/Users/citizen_wang/Documents/PycharmProject/learnpython', '/Users/citizen_wang/Documents/PycharmProject/learnpython', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']

比较两者的不同,会发现 PycharmProject 的默认路径,会包含 Project 目录,也就解释了为什么在 pycharm 里面可以执行,但是在 terminal 终端里面就会包 no module name 的错误。

解决方法

在 site-packages 文件中增加 Pycharm 文件路径。

cd /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages
  • site-packages 是 python 默认的模块目录
vim pycharm.pth
# 将 pycharmproject 项目的绝对路径写入到文件中。
/Users/citizen_wang/Documents/PycharmProject/

测试

这里写图片描述
比如要导入 items 中的 CnblogspiderItem

from learnpython.cnblogSpider.cnblogSpider.items import CnblogspiderItem

虽然是成功了,但是感觉有点怪怪的。


各位看客有更好的方法,也请留言评论,不胜感激。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值