无法为 Python 3.4 创建工作虚拟环境

Couldn't create working virtual environment for Python 3.4

installed Python 3.4.2 和 Virtualenv 12.0.5 在我的 Linux Mint 17.1

然后我尝试创建: $ virtualenv venv

并且还使用 --clear and/or -p /usr/bin/python3.4,总是收到消息:

Using base prefix '/usr' New python executable in venv/bin/python3 Also creating executable in venv/bin/python ERROR: The executable venv/bin/python3 could not be run: [Errno 13] Permission denied

另一个尝试是: $ pyvenv-3.4 venv

创建时没有出错,但在 venv/bin 文件中 python3.4 是 link 到 /usr/local/bin/python3.4 的符号。然后,当我使用 pip 或 pip3 激活并安装任何库,然后尝试导入它时,出现错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'anymoduledownloaded'

我一直在 Python 2.X 中使用 virtualenv 并且从来没有遇到过这种错误。想知道我做错了什么吗?

谢谢!!

=======已编辑=======

这是我的分区 (fdisk -l) 的输出:

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    98707455    49352704   83  Linux
/dev/sda2       303507456  3890644991  1793568768    5  Extended
/dev/sda3   *    98707456   303507455   102400000    7  HPFS/NTFS/exFAT
/dev/sda4      3890644992  3907028991     8192000   82  Linux swap / Solaris
/dev/sda5       303509504  3890644991  1793567744    7  HPFS/NTFS/exFAT`

还有我的 fstab:

<file system> <mount point>   <type>  <options>       <dump>  <pass>
-> was on /dev/sda1 during installation
UUID=a38f9c6d-3cd9-4486-b896-acbc6182ec61 /               ext4    errors=remount-ro 0       1
-> swap was on /dev/sda4 during installation
UUID=efad7b53-79a8-4230-8226-9ca90c68ea9d none            swap    sw              0       0`

我也为此苦苦挣扎,所以我写了一个 ugly bash script 来帮助我解决这个问题。你做的和我做的唯一显着区别是第 133 行:

/path/to/python/bin/python3.4 /path/to/python/bin/pyvenv /path/to/venv

即显式命名python的实例和venv工具。那么

/path/to/venv/bin/pip install django # or whatever

编辑

我在 VM 中安装了 Linux Mint 以尝试构建 Python 3.4 虚拟环境。根据我看到的错误消息和 this answer,我了解到我必须执行以下操作才能获得完整的 Python 3.4 构建:

apt-get install build-essential libssl-dev openssl

没有这个,我的 Python 3.4 版本不包含 pip。请注意,您可能想要安装 readline 和其他开发包。


不请自来的建议

  1. 不要以 root 身份执行此操作,创建一个专用于 运行 您的 venv
  2. 的用户
  3. 创建脚本来创建您的环境
  4. 将该脚本检查到您的源代码库中

我多次删除了我的 python 二进制文件和 venvs,然后用这个脚本重新创建了所有这些以确保我的脚本重现了我的环境,然后剥离了识别信息并将其保存在 github分享它。我真的应该为此使用更正式的工具,例如 docker/puppet/chef.

那是你挂载的共享分区吗?共享分区的文件系统是否与您尝试的非共享分区不同?如果是,那么 IMO,这肯定会导致错误,因为您正在一个文件系统上为 python 制作和编译二进制文件,因此它不会在另一个文件系统上运行。

this answer 中所述,将带有 exec 标志的条目添加到您的 /etc/fstab 可能会使它对您有用,即,您可能需要为此处的 NTFS 磁盘使其自动挂载:

<file system> <mount point>   <type>  <options>       <dump>  <pass>
-> was on /dev/sdaX during installation
UUID=<uid_of_NTFS> /     ntfs    auto,user,exec,nodev,rw,errors=remount-ro 0       1