Python中可选的环境变量设置

好记性不如烂笔头,看到Python Optional Variables这一块,把学习的东西记录下来

会写Java Hello World的同学一定知道如何设置环境变量,比如:JAVA_HOME,CLASSPATH等。

Python中也一样有类似的环境变量,有一些还是可选的(比如:PYTHONPATH, PYTHONSTARTUP等)

  1. 设置PYTHONPATH

这个环境变量有什么用呢?

我们知道在导入模块时(比如:import some_module_name),Python需要在某些路径(即sys.path这个列表中的路径)中去寻找相应的模块,而PYTHONPATH这个变量就是告诉Python,将它的值也加入到搜索路径中(即将PYTHONPATH的值合并到sys.path列表中)。

export PYTHONPATH=/tmp
python -c "import sys; print ‘found‘ if ‘/tmp‘ in sys.path else ‘‘ "

输出结果是:found

说明/tmp在sys.path中被找到了(即/tmp附加到了sys.path中)

2. 设置PYTHONSTARTUP

如果这个环境变量的值是一个可读的文件,那么该文件中的Python命令会在交互模式启动之前执行。

echo "print ‘hello world‘" > /tmp/a.py
export PYTHONSTARTUP=/tmp/a.py
python

在启动python交互模式后,会看到有hello world已经被输出了。

3. 设置PYTHONHOME

一般在这个变量没有被设置的情况下,Python中的sys.path会列出一些模块的搜索路径。

# 比如:
[‘‘, ‘/usr/lib/python2.7‘, ‘/usr/lib/python2.7/plat-linux2‘, 
‘/usr/lib/python2.7/lib-tk‘, ‘/usr/lib/python2.7/lib-old‘, 
‘/usr/lib/python2.7/lib-dynload‘, ‘/usr/local/lib/python2.7/dist-packages‘, 
‘/usr/lib/python2.7/dist-packages‘]

Python模块的搜索路径一般默认是sys.prefix/lib,可以看到很多路径是 /usr/lib/... 这种,其中/usr 就是sys.prefix这个变量的值(windows上可能是你安装Python的目录,比如: C:\Python2.7)。

如果人工指定了PYTHONHOME,那么sys.prefix的值就会被替换。

随便替换PYTHONHOME的值,可能造成Python无法启动,替换前请备份sys.prefix的值

4. 设置PYTHONCASEOK

这个变量只对Windows起效,可以设置为任意的值(比如:SET PYTHONCASEOK=OK)

设置了以后,Python对模块的导入,将忽略大小写(只对用户module忽略大小写,对built-in module还是大小写敏感)

5. 设置PYTHONIOENCODING

看这个名字,IO Encoding可以猜到这个东西是和输入输出有关的。对,这个环境变量的作用就是指定Python程序标准输入输出(stdin,stdout,stderr)的编码。

关于这个东西的运用,请参考:http://www.soimort.org/posts/118/  太长不看 :D

That‘s it!

时间: 2024-10-07 08:59:38

Python中可选的环境变量设置的相关文章

(转)windows 下 Java 及 Python 环境变量设置

转自:http://www.cnblogs.com/zhj5chengfeng/archive/2013/01/01/2841253.html http://www.cnblogs.com/qiyeshublog/archive/2012/01/24/2329162.html 首先,你应该已经安装了 java 的 JDK 了,笔者安装的是:jdk-7u7-windows-x64 接下来主要讲怎么配置 java 的环境变量,也是为了以后哪天自己忘记了做个备份 1.进入“计算机”的“属性”选项,选择

Linux环境变量设置中配置文件分析(/etc/profile,~/.bashrc等)(转)

说明:在研究中发现,对于不同版本的Linux系统有着不同的文件,但是总的入口是不变的/etc/profile,下面只是展示加载顺序的研究过程,所以会有些系统没有这个文件等问题. 一.配置文件与作用域: 1.系统级别: /etc/environment:在登录时操作系统使用的文件,系统在读取profile前,设置环境文件的环境变量. /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

crontab中运行newLISP脚本的环境变量设置

今天遇到一个问题,在终端里运行newLISP脚本,一切正常,移动到crontab中就不行.即便crontab -e命令运行在同一个用户下,还是有问题. 由于newLISP脚本要用到hive和hadoop,估计是环境变量的问题.所以先用newLISP shell运行(env)命令,将当前环境变量记录到文件evn.lsp中. 然后在newLISP脚本中加载之. 下面是env.lsp文件部分内容: (set 'local-envs '(("LC_PAPER" "en_US.UTF-

python,pip环境变量设置

安装好python后,配置环境变量. 安装pygame需要先配置两个环境变量. 第一个是python的.先打开计算机,然后点击‘系统属性’然后点击‘高级系统设置’然后点击‘环境变量’在系统变量中找到path选择并编辑在末尾添加“;”号来作为与前面的间隔.我将python安装到了c盘的py文件夹 所以我的安装目录是C:\py.(不要关闭编辑系统变量的界面,我们接着找第二个环境变量) 第二个是pip的(我们通过pip来安装pygame)pip在安装的python里的Scripts文件里,所以添加的目

linux中环境变量设置

Linux下环境变量设置的三种方法: 如想将一个路径加入到$PATH中,可以像下面这样做: 只对当前的shell 起作用的环境变量 1.控制台中设置,不赞成这种方式,因为他只对当前的shell 起作用,换一个shell设置就无效了: 直接控制台中输入 : \(PATH="\)PATH":/NEW_PATH (关闭shell Path会还原为原来的path) 对所有的用户的都起作用的环境变量 2.修改 /etc/profile 文件,如果你的计算机仅仅作为开发使用时推存使用这种方法,因为

[转载]Ubuntu 下开发 Android 环境变量设置

-----------------------------------------------------ANDROID_SDK_HOME:/home/cmm/avds PATH:/home/cmm/android-sdk-linux/tools;/home/cmm/android-sdk-linux/platform-tools CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib ---------------------------------------

Qt 环境变量设置

准备工作,在系统环境变量中增加如下项目:path=C:\Qt\Qt5.3.0\5.3\mingw482_32\bin:C:\Qt\Qt5.3.0\Tools\mingw482_32\bin;%path%QT_PLUGIN_PATH  C:\Qt\qwt-6.1.0\plugins    QTDIR                  C:\Qt\Qt5.3.0\5.3\mingw482_32编译QtCreator:安装QtCreator:编译Qwt:安装Qwt:使用Qwt,配置.pro文件:在建立

【Linux】环境变量设置

在Windows中环境变量设置是非常easy的事情.例如以下图.仅仅要右键我的电脑->高级系统设置->环境变量,选择Path之后,点击"编辑"就能够输入你要加入的内容. 能够把一些希望直接执行的命令行命令加入上去. 比方java,就要把jdk下的bin文件夹搞上去等. 然而.在Linux中就没有这么简单了. 以Ubuntu为例.环境变量设置的方式有两种,一种是 通过Ctrl+Alt+T打开终端,然后输入: sudo gedit /etc/environment 之后输入pa

Ubuntu 下开发 Android 环境变量设置

-----------------------------------------------------ANDROID_SDK_HOME:/home/cmm/avds PATH:/home/cmm/android-sdk-linux/tools;/home/cmm/android-sdk-linux/platform-tools CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib ---------------------------------------