Python 在Vagrant中安装django cron时权限被拒绝

Python 在Vagrant中安装django cron时权限被拒绝,python,python-3.x,pip,vagrant,django-cron,Python,Python 3.x,Pip,Vagrant,Django Cron,运行pip install django cron时,我收到以下错误: ERROR:ERROR[Errno 13]权限被拒绝:'/vagrant/.venv/bin/python'在执行命令python setup.py egg_info时 错误:由于环境错误,无法安装程序包:[Errno 13]权限被拒绝:'/vagrant/.venv/bin/python' 考虑使用“-Upple”选项或检查权限。 但是,如果我使用--user,我会得到一个不同的错误: 错误:无法执行'--user'安装

运行
pip install django cron
时,我收到以下错误:

ERROR:ERROR[Errno 13]权限被拒绝:'/vagrant/.venv/bin/python'在执行命令python setup.py egg_info时
错误:由于环境错误,无法安装程序包:[Errno 13]权限被拒绝:'/vagrant/.venv/bin/python'
考虑使用“-Upple”选项或检查权限。
但是,如果我使用
--user
,我会得到一个不同的错误:

错误:无法执行'--user'安装。用户站点包在此virtualenv中不可见。
我的venv被激活了

当我之前尝试安装库时,一切正常,如果使用sudo命令,我会收到以下警告:

警告:目录“/home/vagrant/.cache/pip”或其父目录不归当前用户所有或不可写。缓存已被禁用。检查该目录的权限和所有者。如果使用sudo执行pip,您可能需要sudo的-H标志。
遗憾的是,使用
-H
无法解决此问题,我不确定如何更改对.venv文件的访问权限,如有任何帮助,将不胜感激

我只在Python模块
django-cron
django-crontab
中遇到这个错误,但是像
pillow
这样的其他模块可以成功安装

编辑4: 我的设置有点简陋,因为我使用的是Vagrant,但我有PyCharm社区Editon,所以我最终下载了两次包,一次是为了让编辑器识别它,另一次是为了运行程序的Vagrant,当我在PyCharm中这样做时,它在PyCharm中工作

这是我使用的
vagrant文件

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-18.04"

  config.vm.network "forwarded_port", guest: 8080, host: 8080

  config.vm.provision "shell", inline: <<-SHELL
    sudo apt-get install python3-distutils -y
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    sudo python3 get-pip.py
    rm get-pip.py
    sudo pip install virtualenv
    cd /vagrant 
    virtualenv -p /usr/bin/python3 .venv --always-copy
    echo "cd /vagrant && source /vagrant/.venv/bin/activate" >> /home/vagrant/.profile
  SHELL
end
Vagrant.configure(“2”)do | config|
config.vm.box=“bento/ubuntu-18.04”
config.vm.network“forwarded_port”,来宾:8080,主机:8080
config.vm.provision“shell”,内联:/home/vagrant/.profile
壳
结束

当您没有对
/vagrant/.venv
文件夹的写入权限时,通常会发生这种情况。您可以使用
ls-l
cmd检查访问权限


如果是这样,您应该更改对
/vagrant/.venv
文件夹的访问权限。

当您没有对
/vagrant/.venv
文件夹的写入权限时,通常会发生这种情况。您可以使用
ls-l
cmd检查访问权限


如果是这样,您应该更改对
/vagrant/.venv
文件夹的访问权限。

只需尝试在cmd中使用pip命令即可

pip install <packagename>
pip安装

只需尝试在cmd中使用pip命令即可

pip install <packagename>
pip安装

默认情况下,Vagrant配置脚本以root用户身份执行。由于您在配置期间创建了虚拟环境,因此目录归root所有,普通用户(vagrant)无法访问

要解决这个问题,您应该将shell配置选项“privileged”设置为false

更改此行:


config.vm.provision“shell”,内联:默认情况下,Vagrant配置脚本作为root用户执行。由于您在配置期间创建了虚拟环境,因此目录归root所有,普通用户(vagrant)无法访问

要解决这个问题,您应该将shell配置选项“privileged”设置为false

更改此行:



config.vm.provision“shell”,内联:显然,将文件写入该文件夹是一个权限问题。但是你为什么要在vagrant中使用venv,因为它已经提供了与你的操作系统隔离的应用程序?那么,你的用户是否有
/vagrant/.venv/bin/python
或任何父目录的写入权限?Mistermigagi,不确定,但当我预先安装软件包时,我没有这样的错误。Ruddra,你这是什么意思?你是说:“sudo pip install显然,将文件写入该文件夹是一个权限问题。但是你为什么要在vagrant中使用venv,因为它已经提供了与你的操作系统隔离的应用程序?那么,你的用户是否有
/vagrant/.venv/bin/python
或任何父目录的写入权限?Mistermigagi,不确定,但当我预先安装软件包时,我没有这样的错误。Ruddra,你这是什么意思?你是说:“sudo pip install这是我收到权限错误时使用的命令这是我收到权限错误时使用的命令
higlight
有时表示软链接。我不认为这是相关的。对不起,我运行了错误的命令,那一次,我不确定我是否理解它的输出,我应该发送输出吗?drwxrwx,这是我猜测的venv许可,如果我错了,对不起-rwxrwx 1 vagrant vagrant 4526456 Jul 12 09:10/vagrant/.venv/bin/python,对路由的权限同样,在运行whoami之后,我看到的输出是vagrant,我检查的每个文件都是rwxrwxrwx,当安装不同的包时,一切正常。
highlighted
有时意味着软链接。我不认为这是相关的。对不起,我运行了错误的命令,那一次,我不确定我是否理解它的输出,我应该发送输出吗?drwxrwx,这是我猜测的venv许可,如果我错了,对不起-rwxrwxrwx 1 vagrant vagrant 4526456 Jul 12 09:10/vagrant/.venv/bin/python,路由许可也在运行whoami之后,我看到输出说vagrant,我检查的每个文件都说rwxrwxrwx,当安装不同的包时,一切都正常。好的,谢谢你,如果你是最好的,我几乎已经放弃了希望,顺便说一句,我能编辑一下vagarntfile吗?@MareksNo,我想你已经知道如何使用Vagarant了。您确实可以编辑vagrant文件,但必须重新创建VM才能解决问题(
vagrant destroy
后跟
vagrant up
)。这将销毁存储在VM中的所有数据以及最初创建VM后安装在VM上的所有软件。如果您不想重新创建虚拟机,将运行一个快速修复程序
chown