无法为Python3.4创建工作虚拟环境

2024-10-01 09:16:01 发布

您现在位置:Python中文网/ 问答频道 /正文

Linux Mint 17.1中的Iinstalled Python 3.4.2和virtualenv12.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'

我一直在python2.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:

^{pr2}$

Tags: indevbinvirtualenvvenvlinuxusr错误
2条回答

我也在努力解决这个问题,所以我写了一个ugly bash script来帮助我解决这个问题。你做的和我做的唯一显著区别是在第133行:

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

也就是说,显式地命名python实例和venv工具。那么

^{pr2}$

编辑

我在一个VM中安装了linuxmint,试图构建一个python3.4虚拟环境。根据我看到的错误消息和this answer,我了解到必须执行以下操作才能获得完整的Python3.4版本:

apt-get install build-essential libssl-dev openssl

没有这个,我的python3.4版本就不包含pip。请注意,您可能希望安装readline和其他开发包。在


主动建议

  1. 不要以root用户身份执行此操作,请创建一个专用于运行venv的用户
  2. 创建脚本以创建环境
  3. 将该脚本签入源代码repo

我删除了我的python二进制文件和venv多次,然后用这个脚本重新创建了所有的,以确保我的脚本复制了我的环境,然后剥离了标识信息并保存在github上以共享它。我真的应该用一个更正式的工具,比如docker/puppet/chef。在

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

this answer中所述,在/etc/fstab中添加带有exec标志的条目可能会使其适合您,也就是说,您可能需要在此处为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

相关问题 更多 >