如何使用PYTHONPATH

我怎样才能使用PYTHONPATH? 当我尝试在path中运行脚本时,找不到文件。 当我cd到脚本运行脚本的目录。 那么PYTHONPATH有什么好处呢?

$ echo $PYTHONPATH :/home/randy/lib/python $ tree -L 1 '/home/randy/lib/python' /home/randy/lib/python ├── gbmx_html.py ├── gbmx.py ├── __init__.py ├── __pycache__ ├── scripts └── yesno.py $ python gbmx.py -h python: can't open file 'gbmx.py': [Errno 2] No such file or directory $ cd '/home/randy/lib/python' 

光盘后,它运行的文件目录..

 $ python gbmx.py -h usage: gbmx.py [-h] [-b] 

为什么我不能使用PYTHONPATH?

我觉得你有点困惑。 PYTHONPATH设置导入 python模块的searchpath,而不是像你正在尝试执行它们。

PYTHONPATH增加模块文件的默认searchpath。 格式与shell的PATH相同:由os.pathsep分隔的一个或多个目录path名(例如Unix上的冒号或Windows上的分号)。 不存在的目录被忽略。

除了普通的目录之外,单独的PYTHONPATH条目可能指的是包含纯Python模块的zipfiles(无论是源代码还是编译forms)。 扩展模块不能从zip文件导入。

默认searchpath是依赖于安装的,但通常以前缀/ lib / pythonversion开头(请参阅上面的PYTHONHOME)。 它总是附加到PYTHONPATH。

一个额外的目录将被插入到PYTHONPATH前面的searchpath中,如上面在接口选项下所述。 searchpath可以在Python程序中作为variablessys.path来操作。

http://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH

你在找什么是PATH。

 export PATH=$PATH:/home/randy/lib/python 

但是,要将Python脚本作为程序运行,还需要在第一行中设置Python的shebang 。 像这样的东西应该工作:

 #!/usr/bin/env python 

并给予执行权限:

 chmod +x /home/randy/lib/python/gbmx.py 

那么你应该可以从任何地方简单地运行gmbx.py

PYTHONPATH只影响import语句,而不是顶层Python解释器对作为参数给出的python文件的查找。

需要设置PYTHONPATH并不是一个好主意 – 就像任何依赖于环境variables的东西一样,在不同机器上一致地复制事物会变得棘手。 更好的方法是使用Python可以安装的“包”(使用'pip'或distutils),这是Python已经知道的与系统相关的path。

阅读[ http://guide.python-distribute.org/introduction.html – Broken Link] https://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/ – 'The Hitchhiker's包装指南“以及http://docs.python.org/2/tutorial/modules.html – 它解释了PYTHONPATH和更低级别的软件包。

你混淆了PATH和PYTHONPATH。 你需要这样做:

 export PATH=$PATH:/home/randy/lib/python 

python解释器使用PYTHONPATH来确定加载哪些模块。

PATH被shell用来确定要运行的可执行文件。