使用virtualenv的pip需要sud

2024-10-01 11:28:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在OSX上,通过virtualfish设置了一个名为ds-mapreduce-env的python virtualenv。在我的项目目录中激活了venv,看起来选择了正确的pip和{}:

~/d/ds-mapreduce (venv) master ➜ which pip
/Users/cody/.virtualenvs/ds-mapreduce-env/bin/pip
~/d/ds-mapreduce (venv) master ➜ which python
/Users/cody/.virtualenvs/ds-mapreduce-env/bin/python

但是当我运行pip install时,它并没有按照预期安装到虚拟环境中。但是,当我使用sudo时,它确实是这样。在

^{pr2}$

我猜这是某种权限问题,但我搞不懂。我用brew install python安装了python,用{安装了{}。我试着拆除和重新安装,但没有效果。在

我的解决方案

我的问题是我的PYTHONPATH。我在我的/usr/local/lib/python2.7/site-packages前面加了PYTHONPATH。删除它解决了这个问题!在


Tags: installpipmasterenvwhichbinvenvds
1条回答
网友
1楼 · 发布于 2024-10-01 11:28:50

第一步是卸载全局安装的软件包:

pip uninstall -y geonamescache

通过检查/usr/local/lib/python2.7/site-packages/,确认其已完全移除。如果没有,请手动清除在那里发现的任何相关碎屑。在

下一步是更好地将虚拟环境site-packages与全局site-packages隔离开来。将以下内容添加到~/.config/fish/config.fish

^{pr2}$

如果您打开一个新的终端会话,现在如果您在没有激活的虚拟环境的情况下运行pip install geonamescache应该会得到一个错误,这正是我们想要的。通过vf new ds-mapreduce-env创建并激活一个新的虚拟环境,并再次尝试相同的pip install geonamescache调用,包应该安装到虚拟环境中。在

由于这将阻止您在全局site-packages中安装任何内容,您可能需要设置一个别名,允许您覆盖此隔离并执行全局pip操作。添加以下函数作为~/.config/fish/functions/gpip.fish

function gpip -d "Manage globally-installed Python packages"
    env PIP_REQUIRE_VIRTUALENV="" pip $argv
end

有了它,您可以(例如)通过以下方式升级您的全球软件包:

gpip install  upgrade setuptools pip wheel virtualenv

上面的大部分已经通过Tacklebox+Tackle(查找pip插件)来解决,这些项目旨在轻松地为fish环境添加增强功能。在

相关问题 更多 >