我的 PYTHONPATH 环境似乎不起作用



我已经在我的电脑(mac)上安装了pip,我尝试了这些:

$export PYTHONPATH=/usr/local/lib/python2.7/site-packages/pip
$python pip freeze list
/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'pip': [Errno 2] No such file or directory

它不起作用,但是如果我在python命令中指定此完整路径,则可以正常工作:

$python /usr/local/lib/python2.7/site-packages/pip freeze list
ant==0.1.0
appnope==0.1.0
astroid==1.4.8
backports-abc==0.5
........

为什么?

直接运行pip freeze就足够了。您根本不需要通过python pip或调整$PYTHONPATH来运行它。

第一个代码段中的错误与您调用 python 的方式有关。您的命令被解释为python <script-filename> [script-arguments ...] 。你传入的文件名是 pip ,所以 python 在当前目录中查找一个名为 "pip" 的文件。该文件不存在,因此python崩溃并显示"找不到文件"错误。

python <full-path-to-script>有效是因为...好吧,为什么不呢?Python 找到脚本并执行它。

正如评论中指出的那样,您不想弄乱PYTHONPATH。如果你想在同一台计算机上拥有不同版本的python,或者使用不同的安装包(或模块)安装python,你需要的是使用virtualenv

创建一个新的虚拟环境。

virtualenv /usr/local/custom-python/

然后,每当您想使用它或将软件包安装到其中时,只需执行

source /usr/local/custom-python/bin/activate

尝试使用: $export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages首先,你的代码可能会覆盖被弃用的原始 PYTHONPATH。其次,不要将 pip 包含在 python 路径中,因为 pip 是一个应该包含的包。

python /your/path/to/pip这个点是一个文件夹,其中有一个__init__.py。所以python可以读取它。但是如果你直接定义 PYTHONPATH 到 pip 文件夹,python 不会找到这个__init__.py来表示 pip(参见关于 python 导入包的文档)

此外,我认为您可以将二进制点(可能位于/usr/bin)包含在您的路径中,以便您可以使用 $ pip command 直接调用它

最新更新