我怎样才能使用PYTHONPATH?当我尝试在路径中运行脚本时,找不到该文件.当我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'
Run Code Online (Sandbox Code Playgroud)
cd到文件目录后运行..
$ python gbmx.py -h
usage: gbmx.py [-h] [-b]
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用PYTHONPATH?
Ped*_*eck 187
我觉得你有点困惑.PYTHONPATH设置导入 python模块的搜索路径,而不是像你正在尝试那样执行它们.
PYTHONPATH增加模块文件的默认搜索路径.格式与shell的PATH相同:一个或多个目录路径名由os.pathsep分隔(例如Unix上的冒号或Windows上的分号).默认忽略不存在的目录.
除了普通目录之外,单个PYTHONPATH条目可以引用包含纯Python模块的zip文件(源代码或编译形式).无法从zip文件导入扩展模块.
默认搜索路径是依赖于安装的,但通常以prefix/lib/pythonversion开头(参见上面的PYTHONHOME).它总是附加到PYTHONPATH.
如上所述,在接口选项下,将在PYTHONPATH前面的搜索路径中插入一个附加目录.搜索路径可以在Python程序中作为变量sys.path进行操作.
http://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH
您正在寻找的是PATH.
export PATH=$PATH:/home/randy/lib/python
Run Code Online (Sandbox Code Playgroud)
但是,要将python脚本作为程序运行,还需要在第一行中为Python 设置shebang.这样的事情应该有效:
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
并赋予它执行权限:
chmod +x /home/randy/lib/python/gbmx.py
Run Code Online (Sandbox Code Playgroud)
那么你应该能够gmbx.py
从任何地方运行.
Ric*_*ard 54
你混淆了PATH和PYTHONPATH.你需要这样做:
export PATH=$PATH:/home/randy/lib/python
Run Code Online (Sandbox Code Playgroud)
python解释器使用PYTHONPATH来确定要加载的模块.
shell使用PATH来确定要运行的可执行文件.
cod*_*ure 37
PYTHONPATH
只影响import
语句,而不是顶级Python解释器查找作为参数给出的python文件.
需要PYTHONPATH
设置并不是一个好主意 - 与依赖于环境变量的任何东西一样,在不同的机器上一致地复制事物会变得棘手.更好的是使用Python'包',可以在Python已经知道的系统相关路径中安装(使用'pip'或distutils).
阅读[ 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和较低级别的包装.
在您的示例中设置 PYTHONPATH 后,您应该能够做到
python -m gmbx
Run Code Online (Sandbox Code Playgroud)
-m
选项将使 Python 在路径中搜索您的模块 Python 通常在其中搜索模块,包括您添加到 PYTHONPATH 的内容。当您运行解释器 like 时python gmbx.py
,它会查找特定文件并且 PYTHONPATH 不适用。