前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 路径管理以及常见报错

python 路径管理以及常见报错

作者头像
友儿
发布2022-09-29 16:09:23
1.3K0
发布2022-09-29 16:09:23
举报
文章被收录于专栏:友儿

路径管理

路径

绝对路径

总是从根目录开始

代码语言:javascript
复制
H:\PyCharmProjects\tutorials_2\jd_crawler\main.py

相对路径

代码语言:javascript
复制
jd_crawler\main.py
  • ... .代表当前目录, ..代表父目录

工作目录

当前执行命令所在的目录

代码语言:javascript
复制
# 将工作目录添加进当前的路径列表
sys.path.append(os.getcwd())

路径列表

查看当前路径列表

只有在路径列表当中的包和模块才可以导入和调用

代码语言:javascript
复制
import sys
print(sys.path)

路径搜索顺序

  • 当前脚本路径, 也就是执行文件的目录
  • PYTHONPATH路径
  • 虚拟环境路径
  • site-packages
    • 安装的第三方库所在路径

可以向路径列表添加路径

代码语言:javascript
复制
sys.path.append(r"H:\PyCharmProjects\tutorials_2")

常见报错

ModuleNotFoundError: No module named 'xxxx'

为什么在pycharm中不报错, 在命令行当中报错

代码语言:javascript
复制
Pycharm会自动将当前项目的根目录添加到路径列表当中

`ModuleNotFoundError: No module named 'parser.search'; 'parser' is not a pac kage`

  • 自定义包和内置包名有冲突 修改包名即可
  • 导入的不是一个包

`ModuleNotFoundError: No module named '__main__.jd_parser'; '__main__' is no t a package`

  • 入口程序不可以使用相对路径
  • __main__ 主程序模块名会被修改为__main__

ValueError: attempted relative import beyond top-level package

当前访问路径已经超过了python已知的最大路径

代码语言:javascript
复制
from tutorial_2.jd_crawler.jd_parser.search import parse_jd_item

top-level package 指的是上述from导入命令中的首路径tutorial_2, 而不是根据目录结构
  • 把工作目录加入到路径列表当中
  • 进入到项目根目录下执行命令
  • 上述两个操作相当于将项目根目录加入到路径列表当中

注意事项

  • 确定入口程序, 没有一个锚定的路径就没有办法做相对路径的管理
  • 将项目根目录加入到入口程序当中
  • 进入到项目根目录下执行命令
  • 项目目录结构不要嵌套的太深
  • 脚本文件或者临时运行单个模块中的方法, 可以将根目录临时添加到路径列表当中
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 路径管理
    • 路径
      • 路径列表
      • 常见报错
      • 注意事项
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档