编辑#2找到解决方案; 见下文.
我正在使用VirtualEnv在Flask中编写一个小应用程序.这远非我第一次这样做,但是这次和过去两次我尝试过我遇到了同样的问题.当我. flask/bin/activate
尝试安装一个软件包时 - pip install flup
例如 - 它继续全局安装,而不是安装在VirtualEnv中.奇怪的是,它只发生在我之后deactivate
,并且在这方面做得如此不一致.
也就是说,我似乎能够安装我需要的所有东西,如果我一次完成所有这些,甚至偶尔在我之后deactivate
,但是在一定的间隔之后它就会停止工作并开始尝试安装到我的全局Python中site-packages
.(当然,当它这样做时它也会要求权限.在我明白发生了什么事之前我试图强迫它sudo
,以为我sudo virtualenv flask
不小心把它带到了我自己身上,但是没有,这对某些人来说是全球性的其他原因.)
我没有做任何有趣的事情,比如使用--system-site-packages
参数,我在VirtualEnv配置开始发生之前没有改变任何东西.它第一次发生时,我把它归结为侥幸.现在它变得非常恼火,因为我没有心情卸载所有东西并且每次都重新安装它,或者祈祷我会在引导脚本中考虑我需要的一切.
我没有包含任何错误消息,因为它们不是(或似乎不是)特别有价值; 它只是requirement already satisfied
一遍又一遍地对我大喊大叫.
编辑#1我正在逐渐淡化问题,但我仍然没有解决方案.我在同一目录中创建了一个新的Flask项目,cd
-ed到它,激活它的VirtualEnv等,然后运行which pip
.这是新的VirtualEnv的点子 - 正确的点子.我停用了cd
-ed到我原来的项目,激活了VirtualEnv,然后运行了which pip
.它吐出了另一个项目 - 新的 - pip.我进行rm -r
了新的测试项目,回到原来的状态,which pip
再次运行,然后吐出来/usr/local/bin/pip
.哦.好.
编辑#2:解决方案我可能没有弄清楚确切的原因,但我确实找到了解决方案.在bin/activate
和bin/pip
脚本本身是意外运行的同时将两个VirtualEnvs某种程度上改变,可能(?).也许只是巧合,它在以前从未发生过三次连续发生过.不知道.
我cat
-ed activate
果然,第42行,为
VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask2/flask"
代替
VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask/flask"
我改变了它,又跑which pip
了,得到了正确的结果.尝试安装,得到了一个引导我的堆栈跟踪bin/pip
,并发现它的shebang是错误的.把它改成了正确的道路,一切都很完美.