“内部虚拟环境”;"sudo pip";指向全局python pip的链接

“内部虚拟环境”;"sudo pip";指向全局python pip的链接,python,pip,virtualenv,Python,Pip,Virtualenv,当我尝试使用 (venv) vagrant@vagrant-ubuntu-trusty-64:~$ pip install <package_name> 这是相当复杂的。那么,我如何停止sudo-pip链接到全局python-pip呢 谢谢根本问题是sudo在执行命令时默认不会继承用户的环境。这就是你想要的-相信我 在您的情况下,您的pip要么被引导到它无法写入的venv,要么在sudo下被引导到您不希望它出现的root环境 您发布的解决方案实际上是有效的:如果您使用sudo,请确

当我尝试使用

(venv) vagrant@vagrant-ubuntu-trusty-64:~$ pip install <package_name>
这是相当复杂的。那么,我如何停止
sudo-pip
链接到全局python-pip呢


谢谢

根本问题是
sudo
在执行命令时默认不会继承用户的环境。这就是你想要的-相信我

在您的情况下,您的
pip
要么被引导到它无法写入的venv,要么在sudo下被引导到您不希望它出现的root环境

您发布的解决方案实际上是有效的:如果您使用sudo,请确保准确地告诉它要做什么、如何做以及向谁做!上述所有内容都可以由用户的环境变量控制,因此谨慎是关键


您还可以使用
sudo-E
,它确实继承了调用用户的环境,因此应该保留您的venv。不过,一定要阅读sudo的手册页,或者用谷歌搜索一下你可能遇到的所有问题。

正如Daniel在评论中所说,你应该解决虚拟环境目录的权限问题。可能是您已经使用sudo在该目录中安装了某些内容。或者是你用sudo创造的。这并不理想。我建议销毁virtualenv,然后与流浪用户一起再次创建它。如果您使用的是
pyvenv
,请确保通过
--copies
选项

作为用户27。。。在他们的回答中说,你用sudo运行的pip可能与你作为流浪用户运行的pip不同。您可以随时使用
哪个pip
检查


我建议从python虚拟环境中的哪个python开始。可能您激活了错误的虚拟环境,与您的流浪用户完全无关。

我在pip与sudo pip以及virtualenv pip与本地pip之间也遇到了同样的问题。 我在几个月前创建venv时以root用户身份登录。因此,当我想安装一个新的pip包时,权限被拒绝了。所以用sudo尝试了相同的命令,但是它在我的本地pip上安装了这个包

吸取的教训。我不应该在venv中使用sudo

修正了它:

chmod -R 0777 venv_folder_path_here
-用于在venv文件夹中进行递归更改的R开关

然后激活您的venv并尝试pip安装:

/home/username_here/venv/project_name_here/bin/activate
(venv_name) pip install package_name_here

你是如何建立虚拟环境的?你不应该试图阻止sudo做它应该做的事情;您应该正在修复原始权限问题。
(venv) vagrant@vagrant-ubuntu-trusty-64:~$ sudo /home/vagrant/venv/bin/pip install <package_name>
chmod -R 0777 venv_folder_path_here
/home/username_here/venv/project_name_here/bin/activate
(venv_name) pip install package_name_here