python的sys.path(环境变量)简单总结

基本概念

sys.path指定用于模块搜索路径的字符串列表。

它根据环境变量PYTHONPATH进行初始化,再加上安装时的默认值。

>>> sys.path

[‘‘, ‘/opt/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/SOAPpy-0.12.22-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/defusedxml-0.4.1-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/wstools-0.4.3-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/docutils-0.12-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/suds-0.4-py2.7.egg‘, ‘/opt/lib/python27.zip‘, ‘/opt/lib/python2.7‘, ‘/opt/lib/python2.7/plat-linux2‘, ‘/opt/lib/python2.7/lib-tk‘, ‘/opt/lib/python2.7/lib-old‘, ‘/opt/lib/python2.7/lib-dynload‘, ‘/opt/lib/python2.7/site-packages‘]

此列表的第一项path[0],在程序启动时初始化,是包含调用Python解释器的脚本的目录。

如果脚本目录不可用(例如,解释器以交互方式调用或脚本是从标准输入读取),path[0]是空字符串,表示Python首先搜索当前目录中的模块。

注意脚本的目录在依据PYTHONPATH生成的结果之前插入。

修改path:

一个程序可以根据它自己的目的自由地修改paht列表。

场景:在实际开发中,默认包含了当前目录为搜索路径,所以,当前目录下的模块和子模块均可以正常访问。

但是若一个模块需要import平级的不同目录的模块,或者上级目录里面的模块,就可以通过修改path来实现。

修改path常用两种方法:

1. 即时生效的方法,就是在模块里面修改sys.path值,这种方法修改的sys.path作用域只是当前进程,进程结束后就失效了。

个人比较推荐这种方法,比较干净, 避免一些冲突问题。

比如现在的代码目录结构:

/src/configs/config.py

/src/common/Database.py

假如Database.py期望导入config.py,则可以增加上级目录到sys.path列表里面:

parent_path = os.path.dirname(sys.path[0])
if parent_path not in sys.path:
    sys.path.append(parent_path)
import configs.config

最好加个判断,避免重复加入。

2. 在site-packages/ 增加路径,这种方法一劳永逸, 简单暴力。

举个例子,将/tmp/增加到sys.path

首先cd到指定python的sit-packages/目录下,然后创建一个文件,例如test.pth,在文件中增加/tmp/路径信息,保存退出。

[
[email protected] ~]# cat /opt/lib/python2.7/site-packages/test.pth

/tmp/

[
[email protected] site-packages]# /opt/bin/python

Python 2.7.3 (default, Jul 14 2015, 06:27:34)

>>> import sys

>>> sys.path

[‘‘, ‘/opt/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/SOAPpy-0.12.22-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/defusedxml-0.4.1-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/wstools-0.4.3-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/docutils-0.12-py2.7.egg‘, ‘/opt/lib/python2.7/site-packages/suds-0.4-py2.7.egg‘, ‘/opt/lib/python27.zip‘, ‘/opt/lib/python2.7‘, ‘/opt/lib/python2.7/plat-linux2‘, ‘/opt/lib/python2.7/lib-tk‘, ‘/opt/lib/python2.7/lib-old‘, ‘/opt/lib/python2.7/lib-dynload‘, ‘/opt/lib/python2.7/site-packages‘, ‘/tmp‘]

时间: 2024-11-08 23:46:58

python的sys.path(环境变量)简单总结的相关文章

Python2和Python3的安装以及pycharm安装,path环境变量的配置

一:安装python2.7过程步骤 1.官网下载pythonan安装包: ·输入python搜索 ·找到python官网,点击进入 ·鼠标放在Downloads上,在新弹出的选项中选择Windows,点击进入 ·进入版本选择的界面,左边"Stable Releases"为专业版,右边Pre-releases为社区版 ·在专业版里边找到python2.7.15下载相应版本(一般选择箭头指向的版本下载) ·下载完成后,双击安装包进行 ·如图:默认选项不变,点击下一步 ·1 为更改默认安装路

python解释器安装与环境变量调试

Python解释器安装与环境变量调试 Python解释器安装(3.6): www.python.org这个是python解释器的官网,一定要牢记. 鉴于市场上有两种python版本(2和3),今天两种版本都装一下,互相学习,如有错误还请各位评论指正. ![img](https://img2018.cnblogs.com/blog/1730011/201907/1730011-20190702152252778-1968035960.png) windows系统![](https://img201

Windows系统中path环境变量详解

在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示一步一步地正确配置,但时间一长就忘了,出现了问题也无从下手.究其原因,就是对这些概念没有理解,知其然但不知其所以然.下面的内容,就是帮助大家知其所以然. 一.基本原理 首先看PATH环境变量. JAVA的初学者,必须要学会配置PATH环境变量,否则无法编译.运行JAVA程序.那么,为什么要配置PAT

【转】Mac OS X 中 Zsh 下 PATH 环境变量的正确设置

在 Mac OS X 中使用 zsh,环境变量 PATH 一不小心就会变得很紊乱,表现为自己设置的路径总是被放到系统路径之后,部分路径还会有重复.这是我们不太了解 zsh 启动时加载文件的顺序和 Mac OS X 的 shell 类型导致的. zsh 启动过程中会依次读取以下文件: /etc/zshenv $ZDOTDIR/.zshenv($ZDOTDIR 未设置时默认为 $HOME) 如果是 login shell,读取 /etc/zprofile, $ZDOTDIR/.zprofile 如果

Linux下的PATH环境变量详细用法

linux PATH环境变量全解析 关于PATH的作用: PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径. 比如在根目录/下可以输入命令ls, 在/usr目录下也可以输入ls, 但其实ls这个命令根本不在这个两个目录下. 事实上当你输入命令的时候LINUX会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令, 而PATH的值恰恰就是/bin:/sbin:/usr/bin:--. 其中的冒号使目录与目录之间隔开. 关于新增自定义路径

4. sudo,PATH环境变量,修改字符集,ntpserver,加大文件描述符,隐藏内核版本,锁定关键系统文件

1   命令:  visudo 98gg      98行 yy           复制当前行 p             粘贴 改成   zhang   ALL(ALL)  NOPASSWD:ALL 2  修改PATH环境变量路径 PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径.比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bi

linux中修改PATH环境变量

如何修改PATH环境变量 1.1 什么是环境变量 1.linux里面哪里都可以使用,内容一般都不会发生变化 2.大写 3.PATH LANG 4.修改环境变量的时候前面要加上export 1.2 PATH含义 作用 PATH变量里面存放的是linux下面命令的位置. 1.3 linux下面运行命令的过程 ####1)输入 ls ####2) ls是否在PATH这些路径/目录中 ####3)如果有就执行 解析 ####4)如果没有则提示 command not found 1.4 模拟环境 ##1

一些关于path环境变量的问题

(仅个人观点) 刚学习java的时候很疑惑为什么要配置PATH环境变量,理由是什么 --首先要了解console控制台 计算机的每个操作实际上都是控制台一条一条的dos命令完成的 --在搜索中输入CMD即是计算机的控制台 --以我个人为例,打开控制台显示的是. --然而此时输入[cd 路径]并不能打开不在当前文件夹或者盘下的文件,如不能打开D盘下的文件 --配置环境变量Path路径即是: 作用:在任何路径下都可以打开该文件. 比如,a.txt保存在D:下,在控制台中输入[cd a.txt]若无设

Linux下怎么添加和查看PATH环境变量

linux下查看和添加PATH环境变量来自:http://apps.hi.baidu.com/share/detail/32942984 $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PATH 声明,其格式为: PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N> 你可以自己加上指定的路径,中间用

什么是java path环境变量

参考:https://docs.oracle.com/javase/tutorial/essential/environment/paths.html 从orcle官网的文档中可以看到java path环境变量: java path环境变量就是java在执行命令时 寻找javac这个程序的位置(拓展开来其它应用应该也是这样,资源的环境变量就是某个应用对自己所需要用的资源,所在的位置){一个是程序所在的位置,一个是资源所在的位置}. The PATH environment variable is