刚开始学习Python的时候,自己写的模块所在路径要在每一次启动Python时,进行手动添加路劲(使用import加载Python模块时的路径)。现在学会了另外一个方法,通过设置PYTHONPATH环境变量,可以自动将你需要的路劲加载到Python的sys.path变量里面。这样做,节省了不少敲键盘的工作。
具体的做法很简单,设置一个名叫PYTHONPATH的环境变量,将你想添加的路径作为这个环境变量的值,然后重启启动cmd窗口,运行python即可。
设置PYTHONPATH的过程需要注意几点:
1, 不要用set命令设置环境变化(我不知道为什么使用set命令设置之后,重启会消失?请参考:Win7下使用set命令查看环境变量),直接使用计算机->属性->高级设置->环境变量,这样设置之后,电脑重启也不会丢失;
2, 如果有多个路径,请使用分号进行分割(;);
3, 设置之后,重启cmd窗口,否则不能生效。
Python的原理是,将PYTHONPATH里面保存的路劲,在Python启动的时候,全部自动加载到sys.path变量中。这样,就不用每次手动改变sys.path的值了。
-09-28:
在一个模块被导入时,PVM(Python Virtual Machine)会在后台从一系列路径中搜索该模块,其搜索过程如下:
1、在当前目录下搜索该模块;
2、在环境变量PYTHONPATH中指定的路径列表中依次搜索;
3、在python安装路径中搜索
事实上,PVM通过变量sys.path中包含的路径来搜索,这个变量里面包含的路径列表就是上面提到的这些路径信息。
-10-14:
刚开始学习unittest模块的使用,遇到import失败,通过设置PYTHONPATH轻松解决(Windows平台):
(LinkCheck) D:\pyve\LinkCheck>SET PYTHONPATH=D:\pyve\LinkCheck\src
(LinkCheck) D:\pyve\LinkCheck>SET PYTHONPATH
PYTHONPATH=D:\pyve\LinkCheck\src
(LinkCheck) D:\pyve\LinkCheck>
(LinkCheck) D:\pyve\LinkCheck>python -m unittest src/test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
(LinkCheck) D:\pyve\LinkCheck>python -m unittest -v src/test.py
test_IsValidDomain (src.test.Test_website) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
(LinkCheck) D:\pyve\LinkCheck>
使用python -m的时候,unittest模块所在路径与当前需要测试的文件路径不一致,而当前的这个路径是随项目变化的,通过设置PYTHONPATH,unittest模块在运行的时候,当前路径下的模块之间的import,也能够找到路径。
注意:
(1)unittest不用加.py,而src/test.py一定要加.py;
(2)cmd窗口关闭之后,PYTHONPATH就失效了,要重新添加;
(3)set pythonpath,大小写无关,但后面的路径大小写有关。