Python 3.6(ubuntu 16.04)venv在环境的/ bin

时间:2018-07-12 00:18:38

标签: python-3.x virtualenv

在Ubuntu 16.04中,当我执行python3.6 -m venv myenvironment时,venv不会在../myenvironment/bin中安装python 3.6二进制文件,而只会符号链接到系统二进制文件。 3.6的官方文档提出了其他建议:

  

28.3.1。 。 。 (venv)还会创建一个bin子目录,其中包含python二进制文件的副本。

除非“复制”表示符号链接,否则venv不会执行文档中所述的操作。 pip二进制文件在那里,但不存在python 3.6或任何其他版本的二进制文件。

也许没关系,因为在该环境中3.6将是使用的版本。但是,它将使用哪些模块/软件包? venv did 按预期创建lib/python3.6/site-packages子目录。我是否应该假设除非我放置了不同版本的模块/软件包,否则系统范围的库将在此虚拟环境中使用?

编辑:在部分回答我自己的问题时,Ubuntu 16.04上的默认设置似乎是venv 安装python二进制文件。添加--copies选项将强制venv将二进制文件放入环境的../bin目录中。 venv按预期为环境site-packages创建一个子目录。但是,它没有将标准库模块/程序包放入环境的../lib/python3.6 sub-directory中。

根据print(sys.path)的输出(从环境中运行时),环境的python副本仍会在系统的/usr/lib/python3.6目录中查找标准库。我想这是可以的,但是是否有人想使用标准库中模块或软件包的特定版本呢? -library模块/软件包位于环境的site-packages子目录中?

第二次编辑:这是关于venv关于标准库模块和软件包的行为的SO Q&A: Where is the standard library in python virtual environment? 答案的要点是venv不会在环境目录中创建标准库的副本。始终使用系统范围的标准库。该问答中至少有一位参与者评论说,venv表现得很奇怪。对我来说似乎也很奇怪。有人知道为什么吗?

0 个答案:

没有答案