解决window移植到linux shell执行Python脚本提示找不到模块问题:

简介: 调试python工程时代码正常执行,但远程执行时,导入模块时提示找不到模块,即使模块就在当前工程目录下也不行

问题描述:


       调试python工程时代码正常执行,但远程执行时,导入模块时提示找不到模块,即使模块就在当前工程目录下也不行


解决方案:


1、将工程目录添加到sys.path中 (测试有效)


import sys
cpath = 'project_path' # 写成项目的地址 最好是绝对地址 因为有的地方确实会报错 不清楚原因
sys.path.append(cpath)


2、直接修改系统的环境变量


# 添加或者创建PYTHONPATH这个变量
export PYTHONPATH="project_path"


sys.append()详细说明:


当我们导入一个模块时:import XXX,默认情况下python解释器会搜索当前目录、已安装的内置模块和第三方模块,如果都搜索不到,则会报错。我们的搜索路径存放在sys模块中的path中,sys.path是当前路径的一个列表。[即默认路径可以通过sys.path来打印查看]


4.1 sys.append()


sys.path是一个列表list,它里面包含了已经添加到系统的环境变量路径


当我们要添加自己的引用模块搜索目录时,可以通过list的append方法:


sys.append()


对于需要引用的模块和需要执行的脚本文件不在同一个目录时,可以按照如下形式来添加路径:


【例如】


①导入的XX包在另一个项目文件中,在自己写的程序中需要用到XX包


②所以我们在运行自己的程序时,首先加载导入的XX包,加载的时候python解释器会去解释sys.path默认搜索路径去搜索。


③如果通过sys.path中的路径可以搜索到XX包,然后加载。


④如果无法通过sys.path中的路径搜索到XX包,即说明自己的程序中引用的XX包,与自己的程序脚本所在目录不在同一个路径。(无法在自己的程序脚本中根据默认搜索路径查到XX包)


⑤然后我们就需要将XX包的搜索路径添加到自己的程序脚本的默认搜索路径中,重新运行自己的程序脚本,先搜索XX包再加载XX包。


import sys  
sys.path.append(’需要引用模块的地址')
# sys.path.append("..")   # 这代表添加当前路径的上一级目录


注:这种方式是运行时修改,脚本运行后就会失效。

目录
相关文章
|
3月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
418 7
|
3月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
293 0
|
3月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
418 4
|
4月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
473 9
|
3月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
335 0
|
3月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
230 0
|
4月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
407 2
|
6月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
742 1
|
8月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
237 4
|
8月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
467 3