python - 如何使用 conda 或 virtualenv 在虚拟环境之间共享包?
问题描述
我有多个 python 项目,每个项目都有自己的虚拟环境。此外,我有一个全局 python 环境。我想在虚拟/全局环境之间共享相同的包文件,而不需要多次复制它们(如果可能)。
Environment Packages
----------------------------------------
GLOBAL: A B C D
VENV_1: A B C E
VENV_2: C D F
所以,在这个例子中:
- 所有环境将共享相同的文件。
C
GLOBAL
并且VENV_1
还将为A
和共享文件B
。- 并且
GLOBAL
将VENV_2
共享文件D
。 - 但由于
E
和F
不是全局安装的,因此虚拟环境将单独安装这些包。
我尝试使用virtualenv
该--system-site-packages
标志,但这只是使所有全局包都可以在虚拟环境中访问。因此,当我使用它导出我的环境时pip freeze
,它将包含不必要的包。
如何使用选定的包创建虚拟环境,这样如果全局安装了一个包,则不会在本地创建该包的文件的新副本?这可以使用conda
或virtualenv
任何其他工具吗?
我正在使用带有 python 3.6 的 Windows 10。
解决方案
使用 PyCharm,您可以关联项目,并且您可能可以操纵 venv/Source/activate.bat 文件中的 PYTHONPATH 变量,但我认为您在找错树。
我相信您最好设置一个私有 PyPi 服务器(示例)。这样做,您可以将 pip-install 安装到您的新项目中 - 具有版本控制和其他优点的额外优势。否则,您实际上只是在取消虚拟环境最初为您提供的大部分封装优势。
推荐阅读
- c++ - 如何将 QVariant 转换为 QDomNode
- angular - 未找到 e 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?
- lisp - #1# 不是符号或 lambda 表达式
- c++ - c++ 使用类成员作为模板参数
- python - 预期的 str、bytes 或 os.PathLike 对象,而不是 NoneType
- python-3.x - 通过求解集查找根
- c# - 无法返回 XLWorkbook 中工作表中单元格的值
- typo3 - 错字3删除重复的og:标签
- function - Symfony - 连接表 API 返回
- android - 从我的启动器应用程序中显示当前正在运行的应用程序的对话框