VirtualEnv/Pip尝试全局安装软件包

 jianji 发布于 2023-02-06 12:57

编辑#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/activatebin/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是错误的.把它改成了正确的道路,一切都很完美.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有