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

时间:2015-01-07 22:27:22

标签: python linux pip virtualenv python-3.4

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

然后我尝试创建: $ virtualenv venv

还使用--clear和/或-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是/usr/local/bin/python3.4的符号链接。然后当我使用pip或pip3激活并安装任何lib时,然后尝试导入它,我收到错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'anymoduledownloaded'

我总是在Python 2.X中使用virtualenv并且从未遇到过这种错误。对我做错了什么的想法?

谢谢!

======= EDITED =======

这是我的分区的输出(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`

2 个答案:

答案 0 :(得分:4)

我也很努力,所以我写了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。

答案 1 :(得分:2)

这是您安装的共享分区吗?共享分区是否具有与您尝试过的非共享文件系统不同的文件系统?如果是,那么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