草庐IT

python - 在全局站 pip 包中安装 pip 而不是 virtualenv

coder 2023-05-20 原文

使用 pip3virtualenv 中安装软件包会导致软件包安装在全局 site-packages 文件夹中,而不是安装在 virtualenv 文件夹中。以下是我在 OS X Mavericks (10.9.1) 上设置 Python3 和 virtualenv 的方法:

我使用 Homebrew 安装了 Python3:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew install python3 --with-brewed-openssl

更改了 .bash_profile 中的 $PATH 变量;添加以下行:

export PATH=/usr/local/bin:$PATH

运行 which python3 返回 /usr/local/bin/python3(在重新启动 shell 之后)。

注意:which python3 仍然返回/usr/bin/python

使用pip3安装virtualenv:

pip3 install virtualenv

接下来,新建一个virtualenv并激活它:

virtualenv testpy3 -p python3
cd testpy3
source bin/activate

注意:如果我不指定 -p python3,则 virtualenv 中的 bin 文件夹中将缺少 pip。

运行 which pipwhich pip3 都返回 virtualenv 文件夹:

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

现在,当我尝试安装时,例如在激活的 virtualenv 中使用 pip 进行 Markdown,pip 将安装在全局 site-packages 文件夹中,而不是 virtualenv 的 site-packages 文件夹中。

pip install markdown

运行 pip list 返回:

Markdown (2.3.1)
pip (1.4.1)
setuptools (2.0.1)
virtualenv (1.11)

/Users/kristof/VirtualEnvs/testpy3/lib/python3.3/site-packages的内容:

__pycache__/
_markerlib/
easy_install.py
pip/
pip-1.5.dist-info/
pkg_resources.py
setuptools/
setuptools-2.0.2.dist-info/

/usr/local/lib/python3.3/site-packages的内容:

Markdown-2.3.1-py3.3.egg-info/
__pycache__/
easy-install.pth
markdown/
pip-1.4.1-py3.3.egg/
setuptools-2.0.1-py3.3.egg
setuptools.pth
virtualenv-1.11-py3.3.egg-info/
virtualenv.py
virtualenv_support/

如您所见,global site-packages 文件夹包含 Markdown,而 virtualenv 文件夹不包含。

注意:我之前在不同的 VM 上安装了 Python2 和 Python3(遵循 these 说明)并且在使用 Python3 时遇到了同样的问题;不过,在基于 Python2 的 virtualenv 中安装包可以完美运行。

任何提示、提示……将不胜感激。

最佳答案

有趣的是,您提出了这个问题,我也遇到了完全相同的问题。我最终解决了它,但我仍然不确定是什么原因造成的。

尝试检查您的 bin/pipbin/activate 脚本。在 bin/pip 中,查看 shebang。这是对的吗?如果不是,请纠正它。然后在你的 bin/activate 中的 ~42 行,检查你的 virtualenv 路径是否正确。它看起来像这样

VIRTUAL_ENV="/Users/me/path/to/virtual/environment"

如果错了,改正,deactivate,然后。 bin/activate,如果我们的共同问题有相同的原因,它应该可以工作。如果它仍然没有,无论如何,你在正确的轨道上。我经历了和你一样的问题解决例程,which pip一遍又一遍,跟踪堆栈跟踪,等等。

绝对确定

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

是你想要的,而不是指另一个同名的测试项目(我遇到了这个问题,不知道它是如何开始的。我怀疑是同时运行多个 virtualenvs)。

如果这些都不起作用,那么临时解决方案可能是,正如乔·霍洛威所说,

Just run the virtualenv's pip with its full path (i.e. don't rely on searching the executable path) and you don't even need to activate the environment. It will do the right thing.

也许不理想,但它应该在紧要关头工作。

链接到我原来的问题:

VirtualEnv/Pip trying to install packages globally

关于python - 在全局站 pip 包中安装 pip 而不是 virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952797/

有关python - 在全局站 pip 包中安装 pip 而不是 virtualenv的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  3. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  4. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  5. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  6. 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢 - 2

    HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候

  7. python - 如何读取 MIDI 文件、更改其乐器并将其写回? - 2

    我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

  8. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  9. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  10. Python 刷Leetcode题库,顺带学英语单词(31) - 2

    ValidPalindromeGivenastring,determineifitisapalindrome,consideringonlyalphanumericcharactersandignoringcases. [#125]Example:"Aman,aplan,acanal:Panama"isapalindrome."raceacar"isnotapalindrome.Haveyouconsiderthatthestringmightbeempty?Thisisagoodquestiontoaskduringaninterview.Forthepurposeofthisproblem

随机推荐