【发布时间】:2018-10-17 13:45:29
【问题描述】:
我拉 (git) 一个使用 virtualenv 创建的 python 项目(由我在另一台计算机上创建)。因此,python 库实际上位于该项目的本地目录中(例如,fila_env/bin/python)。拉动它后,我可以找到它(见下面的树)。但是,当我激活环境(使用source fila_env/bin/activate)时,正在使用这台机器上的python而不是virtualenv:
(fila_env) username@ASCSC-645A:~/CODES/.../myProject$ which python
>>> /usr/bin/python
我四处搜索,但找不到一个好的解决方案。我想知道:
- 我如何保证如果有人拉这个项目,他们只会 使用提供的 python 库,而不是他们自己的 python。
- 这是创建 virtualenv 并将整个项目(包括 virtualenv)推送到云端的正确方法吗?
这里有更多信息:
├── yyyyyyExample.py
├── fila_env
│ ├── bin
│ │ ├── activate
│ │ ├── ...
│ │ ├── python
│ │ ├── python2 -> python
│ │ ├── python2.7 -> python
│ │ ├── python-config
│ │ ├── ...
│ │ └── wheel
│ ├── include
│ │ └── python2.7 -> /usr/include/python2.7
│ ├── lib
│ │ └── python2.7
│ ├── local
│ │ ├── bin -> .../fila_env/bin
│ │ ├── include -> .../fila_env/include
│ │ └── lib -> .../fila_env/lib
│ ├── pip-selfcheck.json
│ └── share
│ ├── jupyter
│ └── man
└── xxxxxxExample.py
【问题讨论】:
-
作为替代方案:如果您有明确的 (C)Python 依赖项,最好将其打包为 Conda 包。
-
我对问题的回答是“不”。以其他方式指定任何依赖项,或者只是尝试完全避免它们(您真的需要特定的 Python 版本吗?究竟是什么版本,为什么?)。
-
如果您激活我们的本地环境,它将尝试从本地获取 pip 包,如果在本地环境中找不到包,它将从全局获取。您可以创建一个包含所有 pip 包的 request.txt。每个克隆我们项目的人都会在本地环境中进行 pip 安装
-
@LavanyaPant 所有这些软件包都是使用本地 pip 安装的。 requirements.txt 文件也在那里,但我只发布了一个汇总列表。
-
@Azim 我们应该避免将虚拟环境推送到 git。如果有人想在本地安装它,他/她应该创建虚拟环境并安装你的包。
标签: python virtualenv