13

简而言之,我的问题是当我尝试使用来自 virtualenvwrapper 的 mkvirtualenv 创建一个 virtualenv 时,我收到以下错误:

$ mkvirtualenv test
New python executable in test/bin/python
ERROR: The executable test/bin/python could not be run: [Errno 13] Permission denied

但是,当我查看二进制文件的权限时,据我所知,一切都应该没问题......

$ ll ~/.virtualenvs/test/bin
total 2604
drwxr-xr-x 1 (username) staff       5 Feb  7 19:10 ./
drwxr-xr-x 1 (username) staff       5 Feb  7 18:51 ../
-rwxr-xr-x 1 (username) staff 2655776 Feb  7 19:10 python*
lrwxrwxrwx 1 (username) staff       6 Feb  7 19:10 python2 -> python*
lrwxrwxrwx 1 (username) staff       6 Feb  7 19:10 python2.7 -> python*

当我尝试以 root 身份运行时,我遇到了类似的错误:

$ sudo .virtualenvs/test/bin/python
sudo: unable to execute .virtualenvs/test/bin/python: Permission denied

我在我的 macbook 上运行 Lubuntu 12.10,与 Mountain Lion 一起,并设置了一个分区以用作两个安装之间的共享主目录,大致遵循此处的说明(http://mikeclaffey.com/dual-boot- osx-ubuntu/)。据我所知,这一切都在 ubuntu 和山狮中正常工作,但我提到它只是因为这意味着我的 lubuntu 安装不是严格标准的。

我已经使用 apt-get 安装了 python-setuptools 和 python-dev,然后用于sudo easy_install pip获取 pip-1.2.1,然后使用sudo pip install virtualenv virtualenvwrapper, 获取 virtualenv-1.8.4 和 virtualenvwrapper-3.6。

更多细节:我.virtualenvs在我的主目录中创建,并添加:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
export PIP_VIRTUALENV_BASE=$WORKON_HOME

到我的.bashrc.

此外,我尝试使用sudo apt-get install python-pip而不是 easy_install(这安装了 pip-1.1,而不是 pip-1.2.1),但得到了相同的权限错误。

任何帮助将不胜感激!

4

4 回答 4

27

事实证明,问题与我安装共享分区的方式有关。我已安装(在 /etc/fstab 中):

UUID=....  /home   hfsplus   auto,user,nodev,rw    0    0

但是,“用户”选项自动包含“noexec”——因此,在 virtualenv 将系统 python 二进制文件复制到我的主分区后,由于“noexec”标志,它无法运行。

将我的 fstab 更改为:

UUID=....  /home   hfsplus    auto,user,exec,nodev,rw   0   0

解决了这个问题。

于 2013-02-07T21:09:03.213 回答
2

我曾经也有过一样的问题。我尝试在我的主文件夹中创建一个 virtualenv 并且效果很好,但是当我尝试在不同的分区上创建一个时出现该错误。

所以要解决你的问题,要么尝试不同的位置,要么看看东西是如何安装的。

于 2013-03-28T07:04:26.703 回答
2

正如其他答案(谢天谢地)已经说明的那样,这是一个权限问题。我通过使用正确的权限重新安装所需的驱动器来解决它exec(如前所述)。但我无法使用@duncanm 的答案,因为我在/etc/fstab文件中找不到我的驱动器路径。

我在我的 Ubuntu 14.04 上执行了以下操作,它完成了这项工作。

卸载- _

$ sudo umount /media/ashish/Work/

以正确的权限重新安装-

$ sudo mkdir /media/ashish/Work
$ sudo mount -o exec /dev/sda6 /media/ashish/Work/
$ cd /media/ashish/Work/

/dev/sda6我通过查看文件管理器中的属性选项卡找出了这个部分。

于 2016-03-23T11:27:38.520 回答
0

正如您所发现的,我认为这主要是 exec 权限的问题。您也可以通过在 /data 或 /sd-ext 的子目录中创建 virtualenv 来解决此问题。我正在研究多用户支持,它将主目录放在 /data/home 下,而不仅仅是一张 sd 卡“主目录”。

于 2012-03-16T14:42:26.947 回答