小编Wil*_*man的帖子

什么是没有PYTHONPATH的PYTHONPATH?

我需要为我添加一个新的目录位置PYTHONPATH,但问题是我在一个干净的,新安装的系统(Linux)上PYTHONPATH尚未定义.我已经阅读并使用了PYTHONPATH,我认为我理解得很好,但我不知道当不PYTHONPATH存在时会发生什么.

我无法附加不存在的东西,但是我希望当前发现的所有重要库仍然有用,所以要小心谨慎,从Python中我print str(sys.path)得到了所有的标准值.然后我定义了一个env-variable来PYTHONPATH包含我刚刚找到的所有节点,以及我的新目录.但哇做了很多东西停止工作!Python是如此混乱的新env变量,我必须删除它,此时一切都工作了.由于糟糕PYTHONPATH,系统如此混乱,甚至在提示输入错误的命令时甚至找不到要显示的错误消息.

我的问题不是像结肠缺失那样简单,或者当我应该使用冒号时使用分号; 我检查了.此外,我的新目录不会导致问题,因为即使没有新节点,问题仍然会发生.所以任何人都可以解释为什么这种方法不起作用?

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

下面我按要求提供额外的细节,但不需要再阅读,我认为问题是固定的.解释PYTHONPATH中列出的节点不会覆盖所有"标准"节点,而是成为新的,附加条目(我相信,所以可以控制首先出现的内容)是关键.

从头开始,定义没有PYTHONHOME或PYTHONPATH,从Python中得到这个:

print ':'.join(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:/usr/lib/python2.7/dist-packages/PIL:/usr/lib/python2.7/dist-packages/gst-0.10:/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/python2.7/dist-packages/ubuntu-sso-client   
Run Code Online (Sandbox Code Playgroud)

使用它作为PYTHONPATH(即,在调用Python之前定义一个env变量),即使没有显式使用Python,也会导致命令提示功能非常糟糕.例如:

$> export PYTHONPATH='/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:/usr/lib/python2.7/dist-packages/PIL:/usr/lib/python2.7/dist-packages/gst-0.10:/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/python2.7/dist-packages/ubuntu-sso-client'

$> echo $PYTHONPATH        
/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:/usr/lib/python2.7/dist-packages/PIL:/usr/lib/python2.7/dist-packages/gst-0.10:/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/python2.7/dist-packages/ubuntu-sso-client

$> IntentionalBadCommand       
Fatal Python error: Py_Initialize: Unable to get the locale encoding    
 File "/usr/lib/python2.7/encodings/__init__.py", line 123    
raise CodecRegistryError,\    
                        ^
SyntaxError: invalid syntax       
Aborted
Run Code Online (Sandbox Code Playgroud)

错误在于认为PYTHONPATH需要包含所需的全部宇宙.是的,我在发帖前做了RTFM,但我想我错过了开头词"Augment"的重要性.因此,采取不一切都需要明确指定的建议 - 一个人可以只指定想要的额外添加,我试过:

$> export PYTHONPATH=/usr/lib/python2.7/dist-packages/postgresql-pkg

$> echo $PYTHONPATH         
/usr/lib/python2.7/dist-packages/postgresql-pkg

$> IntentionalBadCommand       
IntentionalBadCommand: command not found
Run Code Online (Sandbox Code Playgroud)

所以它似乎工作,虽然我还没有尝试使用上面提到的postgresql包.仍然有点神秘的是为什么在PYTHONPATH中添加大量不必要的节点会使事情像它一样严重破坏,特别是因为我从应该是可靠的源:sys.path获得条目.

但无论如何,它可能已经解决了,所以谢谢!

python linux environment-variables

6
推荐指数
2
解决办法
7211
查看次数

标签 统计

environment-variables ×1

linux ×1

python ×1