【问题标题】:strange permissions problems for virtualenv python executable (lubuntu-12.10)virtualenv python 可执行文件(lubuntu-12.10)的奇怪权限问题
【发布时间】:2013-01-23 10:48:28
【问题描述】:

简而言之,我的问题是当我尝试使用来自 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),但会出现相同的权限错误。

任何帮助将不胜感激!

【问题讨论】:

  • 玩了一会儿,我发现SD卡上安装了NOEXEC。在没有 NOEXEC 标志的情况下重新安装后,我现在可以更进一步地创建 virtualenv。
  • 如果您将其添加为答案会很棒

标签: permissions python-2.7 virtualenv virtualenvwrapper ubuntu-12.10


【解决方案1】:

正如其他答案(谢天谢地)已经说明的那样,这是一个权限问题。我通过使用正确的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 部分。

【讨论】:

    【解决方案2】:

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

    因此,要解决您的问题,请尝试不同的位置或查看安装方式。

    【讨论】:

      【解决方案3】:

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

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

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

      将我的 fstab 更改为:

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

      解决了问题。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-28
          相关资源
          最近更新 更多