virtualenv 创建的虚拟环境咋个不是完全独立的呢

2016-03-20 22:36:29 +08:00
 patrickstar
创建完虚拟环境并在其下通过 pip 安装包时说我权限不够,一看虚拟环境下的部分目录和文件都是系统环境下的目录或文件的软链接啊,这不安装到虚拟环境的东西实际上也进入了系统环境中取了吗

$ virtualenv --no-site-packages py34env
发现 py34env/include/python3.4m -> /usr/include/python3.4m ,虚拟环境的 include 目录竟然是 /usr/include/python3.4m 的软链接,而且 py34env/lib 目录下很多子目录也是这种情况

加与不加 --no-site-packages 选项结果都一样,我哪儿没搞对啊
5034 次点击
所在节点    Python
17 条回复
4641585
2016-03-20 22:46:51 +08:00
为什么不用 pyvenv 呢?
wellsc
2016-03-20 23:22:26 +08:00
@4641585 为什么用 pyenv 呢?
BOYPT
2016-03-20 23:25:07 +08:00
include 目录只应该有 python 本身的.h 文件,不应该被安装进去任何文件。
66450146
2016-03-21 00:29:36 +08:00
创建完以后 activate 了吗?
Owenjia
2016-03-21 00:33:15 +08:00
看下 python -c "import sys; print(sys.path)" 的输出?
既然用 3.4 了为什么不试试自带的 pyvenv ?
Owenjia
2016-03-21 00:36:32 +08:00
@wellsc pyvenv != pyenv
wellsc
2016-03-21 00:38:34 +08:00
@Owenjia 我知道写错了,但是为什么要用 pyvenv ?
shyling
2016-03-21 06:56:05 +08:00
你要先先激活啊。。
patrickstar
2016-03-21 07:39:57 +08:00
看来推荐使用 pyvenv 啊,这货还没了解过呢,先看看,我只是对 virtualenv 建立的虚拟环境觉得难以理解,为啥子虚拟环境下的 py34env/include/python3.4m 目录是系统环境目录 /usr/include/python3.4m 的软链接,这咋个能不影响系统环境的 python 呢

@66450146
@shyling 使用虚拟环境前才激活啊,我刚刚创建完虚拟环境发现虚拟环境下 include/python3.4m 目录就是个系统环境 /usr/include/python3.4m 目录的软链接,明显感觉 virtualenv 建立虚拟环境偷了懒
patrickstar
2016-03-21 07:55:22 +08:00
查阅了一下子 virtualenv 手册,可能需要增加一个选项:

--always-copy
Always copy files rather than symlinking.

即:$ virtualenv --always-copy py34env
patrickstar
2016-03-21 08:19:38 +08:00
查阅了一下子 pyenv 和 virtualenv 的差异,觉得目前 virtualenv 更符合我的要求一些,我只想建立一个纯净的 python 开发测试环境,而且建立好后准备把整个虚拟环境目录拷贝到其他机器(包括 windows 和 linux )上直接使用;
pyenv 好像是一个针对 bash 的扩展,我实际上根本就不使用 python 2.x ,只是 linux 系统缺省的是 2.x ,否则我会把它干掉了,而且也还不知道 pyenv 在 windows 能不能使用!
wingyiu
2016-03-21 11:16:09 +08:00
virtualenv 创建的环境只是用来隔离 site-package 的,格式 python 自带库没有意义。所以用软连接。
shyling
2016-03-21 13:42:49 +08:00
@patrickstar 因为可以复用啊=-=想直接复制有--always-copy
Mithrandir
2016-03-21 14:39:07 +08:00
@patrickstar 是 pyvenv 不是 pyenv
附上 pyvenv 文档: https://docs.python.org/3/library/venv.html
patrickstar
2016-03-21 15:12:34 +08:00
@Mithrandir 哦,看来我把它搞成 pyenv 了,这名字取得太容易搞错了
66450146
2016-03-21 17:13:11 +08:00
@patrickstar python 本身是软链接没问题啊,这玩意只是给你一个单独的地方安 site-package 而已

如果你要复制的话可以加 --always-copy 参数,不过就算这样你也不能复制到 Windows 用啊……
fzinfz
2016-03-22 18:39:04 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/264996

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX