我的PYTHONPATH env似乎不起作用

时间:2017-01-17 07:15:17

标签: python pip

我已经在我的计算机上安装了pip(mac),我尝试了这些:

$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
........

为什么?

3 个答案:

答案 0 :(得分:1)

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

创建一个新的virtualenv。

virtualenv /usr/local/custom-python/

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

尝试使用: $export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages 首先,您的代码可能会涵盖不推荐使用的orignal PYTHONPATH。其次,不要将pip包含到python路径中,因为pip是应该包含的包。

python /your/path/to/pip此点是一个__init__.py的文件夹。所以python可以读取它。但是如果直接将pYTHONPATH定义为pip文件夹,python将找不到这个__init__.py来表示pip(参见有关python import packge的文档)

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

直接调用它