无法为 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 和其他开发包。
不请自来的建议
- 不要以 root 身份执行此操作,创建一个专用于 运行 您的 venv
的用户
- 创建脚本来创建您的环境
- 将该脚本检查到您的源代码库中
我多次删除了我的 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
我 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 和其他开发包。
不请自来的建议
- 不要以 root 身份执行此操作,创建一个专用于 运行 您的 venv 的用户
- 创建脚本来创建您的环境
- 将该脚本检查到您的源代码库中
我多次删除了我的 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