我的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`
答案 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和其他开发包。
我多次删除了我的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