求助 Virtualenv 的几个问题

2018-02-11 11:43:50 +08:00
 xFrank
Linux 环境,Python2.7.x
1,假设我是新建虚拟环境,那原来主环境中 pip 安装的三方包在虚拟环境中是不是自动可以用?
2,假设我已经创建了虚拟环境 env1,那我在原来主环境中安装了一个新的三方包,那要如何操作,可以在 env1 中可以直接 import 这个新的包,而不需要在 env1 再次安装?
3,假设我已经创建了虚拟环境 env1,env2,然后我在 env2 中安装了一个新的三方包,那要如何操作,可以在 env1 中可以直接 import 这个新的包,而不需要在 env1 再次安装?
3248 次点击
所在节点    Python
9 条回复
gu1yu
2018-02-11 11:51:35 +08:00
22too
2018-02-11 11:52:56 +08:00
轮写好安装脚本 shell 的重要性,环境直接初始化。
xlui
2018-02-11 11:56:24 +08:00
patrickstar
2018-02-11 12:07:29 +08:00
你应该切换到用 Pipenv 或者 pyvenv
takeoffyoung
2018-02-11 13:09:04 +08:00
@gu1yu 1. 可以通过创建的时候添加参数--system-site-packages 来使用系统的 site-packages
@xFrank 2。3 暂时不太好实现,因为 virtualenv 的出现解决的很重要的一个问题就是,各个 repo 中 python 环境的隔离。
而且,考虑到不同 repo 中依赖的包的版本可能是不一致的,不太推荐不同环境中包的混用。
xFrank
2018-02-11 14:07:21 +08:00
了解了,多谢各位
glasslion
2018-02-12 14:25:31 +08:00
要做都可以做到, 只是不建议而已

1. 楼上有人说了, 通过 --system-site-packages 解决
2. 3. 可以通过修改 PYTHONPATH 或 添加 .pth 文件解决

当然这样就违反了环境隔离的初衷, 容易给今后埋坑。 我认为 2. 3. 应该完全杜绝,1. 在一些不太重要的场合 可以酌情使用, 比如安装 PyQt
scriptB0y
2018-02-13 14:18:16 +08:00
1L 正解。不过 virtualenv 就是为了给多个 Python 环境隔离包来管理,重复安装没什么损失吧,优先从 cache 安装,而且体积也不是特别大的样子。
keysaim
2018-02-13 17:41:21 +08:00
彼此独立的 你的依赖不应该都在 requirements.txt 里面么

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

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

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

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

© 2021 V2EX