Ubuntu 16.04添加Python路径失败:Scrapy项目模块导入出错求助
嘿,我看你在配置PYTHONPATH的时候踩了几个小坑,咱们一步步来把这个问题搞定:
1. 先修正环境变量的语法错误
你的.bash_profile里有两个明显的语法问题:
- Linux命令是区分大小写的,
EXPORT得改成小写的export - 变量赋值和导出命令要分开写,或者合并成一行但别留多余空格
你之前的错误写法:
PYTHONPATH=$PYTHONPATH:/home/john/Desktop/myscraper/ EXPORT $PYTHONPATH
改成下面两种正确写法的任意一种就行:
# 写法一:分两行更清晰 PYTHONPATH=$PYTHONPATH:/home/john/Desktop export PYTHONPATH # 写法二:合并成一行 export PYTHONPATH=$PYTHONPATH:/home/john/Desktop
⚠️ 重点提醒:我把路径改成了/home/john/Desktop而不是/home/john/Desktop/myscraper!因为你要导入的是myscraper.items,Python需要找到myscraper这个模块所在的父目录(也就是Desktop),如果把myscraper本身的目录加到PYTHONPATH,Python会在里面找myscraper子模块,自然找不到——这才是你报错的核心原因。
2. 换个更靠谱的配置文件(Ubuntu环境)
Ubuntu默认情况下,非登录shell不会加载.bash_profile,而是优先读~/.bashrc。所以把上面的配置加到~/.bashrc里更稳妥,这样每次打开终端或者运行脚本时环境变量都会自动生效。
3. 让配置立即生效,不用重启终端
改完配置文件后,直接跑下面的命令让新配置生效:
source ~/.bashrc
你可以用这个命令验证PYTHONPATH是否设置正确:
echo $PYTHONPATH
输出里应该能看到/home/john/Desktop。
4. 确保你的项目是合法的Python模块
检查/home/john/Desktop/myscraper目录下有没有__init__.py文件——哪怕是空文件也行。如果没有,赶紧创建一个:
touch /home/john/Desktop/myscraper/__init__.py
只有包含这个文件的目录,Python才会把它当成可导入的模块。
5. 临时测试方案(不想改环境变量的话用这个)
如果只是想快速验证问题,也可以在你的Python脚本开头临时加一行路径:
import sys sys.path.append('/home/john/Desktop') # 之后再正常导入你的模块 from myscraper.items import YourItemClass
6. 最后确认项目结构
确保你的Scrapy项目结构是标准的,大概长这样:
/home/john/Desktop/ └── myscraper/ ├── __init__.py ├── items.py ├── spiders/ │ ├── __init__.py │ └── your_spider.py └── settings.py(其他Scrapy默认文件)
按上面的步骤操作完,再运行你的Python文件,应该就能解决ImportError: No module named myscraper.items的问题了。
内容的提问来源于stack exchange,提问作者Raven

