ƘɌỈ*_*ƬƠƑ 84 python macos pip virtualenv
使用pip在virtualenv中安装软件包会导致软件包安装在全局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
Run Code Online (Sandbox Code Playgroud)
更改了pip3.bash_profile中的变量; 添加以下行:
export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
运行virtualenv返回$PATH(重启shell后).
注意:.bash_profile仍然会返回/ which python3.
使用pip3安装virtualenv:
pip3 install virtualenv
Run Code Online (Sandbox Code Playgroud)
接下来,创建一个新的virtualenv并激活它:
virtualenv testpy3 -p python3
cd testpy3
source bin/activate
Run Code Online (Sandbox Code Playgroud)
注意:如果我没有指定-p python3,那么virtualenv中的bin文件夹中将缺少pip.
运行/usr/local/bin/python3并which python3返回virtualenv文件夹:
/Users/kristof/VirtualEnvs/testpy3/bin/pip3
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试在激活的virtualenv中使用pip安装例如Markdown时,pip将安装在全局site-packages文件夹中,而不是virtualenv的site-packages文件夹中.
pip install markdown
Run Code Online (Sandbox Code Playgroud)
运行usr/bin/python回报:
Markdown (2.3.1)
pip (1.4.1)
setuptools (2.0.1)
virtualenv (1.11)
Run Code Online (Sandbox Code Playgroud)
内容virtualenv:
__pycache__/
_markerlib/
easy_install.py
pip/
pip-1.5.dist-info/
pkg_resources.py
setuptools/
setuptools-2.0.2.dist-info/
Run Code Online (Sandbox Code Playgroud)
内容pip3:
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/
Run Code Online (Sandbox Code Playgroud)
如您所见,全局 site-packages文件夹包含Markdown,virtualenv文件夹不包含.
注意:我之前在不同的VM上安装了Python2和Python3(遵循这些说明)并且在Python3中遇到了同样的问题; 尽管如此,在基于Python2的virtualenv中安装软件包仍能完美运行.
任何提示,提示,...将非常感激.
Cha*_*ies 81
搞笑你带来了这个,我只是遇到了完全相同的问题.我最终解决了它,但我仍然不确定是什么导致它.
尝试检查您的脚本bin/pip和bin/activate脚本.在bin/pip,看看shebang.这是对的吗?如果没有,请更正.然后42在你的线上〜bin/activate,检查你的virtualenv路径是否正确.它看起来像这样
VIRTUAL_ENV="/Users/me/path/to/virtual/environment"
Run Code Online (Sandbox Code Playgroud)
如果它是错的,那就纠正它,deactivate然后. bin/activate,如果我们的共同问题有相同的原因,它应该有效.如果它仍然没有,那么无论如何你都在正确的轨道上.我和你一样经历了同样的问题解决程序,which pip一遍又一遍,跟踪堆栈跟踪等.
绝对确定
/Users/kristof/VirtualEnvs/testpy3/bin/pip3
Run Code Online (Sandbox Code Playgroud)
是你想要的,而不是指另一个同名的测试项目(我有这个问题,并且不知道它是如何开始的.我的怀疑是同时运行多个虚拟现实).
如果这一切都不起作用,那么临时解决办法可能就像Joe Holloway所说的那样,
只需运行virtualenv的pip及其完整路径(即不依赖于搜索可执行路径),您甚至不需要激活环境.它会做正确的事情.
也许并不理想,但它应该在紧张的情况下工作.
链接到我原来的问题:
e.t*_*psy 15
对我来说,这不是一个小点或虚拟问题.这是一个蟒蛇问题.在线上学习了一些教程之后,我在〜/ .bash_profile(或〜/ .bashrc)中手动设置了我的$ PYTHONPATH.这个手动设置$ PYTHONPATH在virtualenv中可用,因为它可能应该被允许.
另外add2virtualenv,由于某种原因,在virtualenv中没有将我的项目路径添加到我的$ PYTHONPATH.
对于那些可能仍然被卡住的人来说,只是一些分叉路径!干杯!
Rez*_*adi 10
我遇到了同样的问题,我通过删除venv目录并重新创建它来解决它!
deactivate (if venv is activated first deactivate it)
rm -rf venv
virtualenv -p python3 venv
. ENV/bin/activate
pip3 install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
现在一切都像魅力一样.
我在安装了 python 2 和 3 的 macos 上遇到了同样的问题。
此外,我有别名指向我的.bash_profile.
alias python=/usr/local/bin/python3
alias pip=/usr/local/bin/pip3
Run Code Online (Sandbox Code Playgroud)
删除别名并使用python3 -m venv venv修复了该问题的重新创建虚拟环境。
首先要检查的是 pip 解析到的位置:
which pip
Run Code Online (Sandbox Code Playgroud)
如果你在一个 virtualenv 中,你会期望这会给你类似的东西:
/path/to/virtualenv/.name_of_virtualenv/bin/pip
但是,由于某种原因,它可能会解析到您的系统 pip。例如,您可能会在您的 virtualenv 中看到这一点(这很糟糕):
/usr/local/bin/pip (或任何不在您的 virtualenv 路径中的东西)。
要解决此问题,请检查您的 pipconfig:
~/.pipconf
~/.conf/pip
/etc/pip.conf
Run Code Online (Sandbox Code Playgroud)
并确保没有任何东西强制您的 Python 路径或 pip 路径(这为我修复了它)。
然后尝试启动一个新终端并重建您的 virtualenv(删除然后再次创建它)
我也有这个问题。pip install <package_name>从/bin我的Mavericks Mac上的Python 3.3虚拟环境中的目录调用会导致将Python软件包安装在Python 2.7全局站点软件包目录中。尽管我的$ PATH从包含目录开始pip。奇怪的。在CentOS上不会发生这种情况。对我来说,解决方案是致电pip3而不是pip。当我已经安装了PIP通过在虚拟环境中ez_setup,三“画中画”的可执行文件已被安装在/bin目录- pip,pip3和pip3.3。奇怪的是,所有三个文件都完全相同。呼唤pip3 install <package_name>导致将Python软件包正确安装到本地site-packages目录中。pip使用完整路径名调用虚拟环境也可以正常工作。我很想知道为什么我的Mac为什么不像我期望的那样使用$ PATH。
小智 5
我在从 virtualenv 中安装 python 包时遇到了同样的问题。在我的案例中,根本原因是不同的。在 virtualenv 中,我(出于对 Ubuntu 的习惯)执行以下操作:
sudo easy_install -Z <package>
Run Code Online (Sandbox Code Playgroud)
这导致 bin/pip shebang 被忽略,并使用 root 的非 virtualenv python 将其安装在全局站点包中。由于我们有一个虚拟环境,我们应该安装没有“sudo”的包
| 归档时间: |
|
| 查看次数: |
82742 次 |
| 最近记录: |