在不使用 pip 的情况下列出安装在 virtualenv 中的包(具有相应版本)
List packages (with respective versions) installed in a virtualenv without using pip
上下文: 从 Debian 8 更新到 9 后,Python 3.4 virtualenvs 停止工作,因为系统站点包全部被 Python 3.5 替换版本。 建议删除旧的 virtualenv,创建一个新的,然后使用 pip install -r requirements.txt
重新安装所有软件包。 但是,我没有一个适用于所有 virtualenv 的 requirements.txt
。我知道可以使用 pip freeze
创建这样的文件,但是由于上述原因,pip
将不起作用1.
问题: 我需要生成一个软件包列表以及它们各自安装在我无法激活的 virtualenv 中。
问题:有没有办法在没有实际 运行 pip 的情况下为 virtualenv 获取类似于 pip freeze
输出的列表?
注意:这个问题不同于“Return a list of imported Python modules used in a script?”,因为请求的答案不需要访问使用virtualenv的脚本,而且还应该return virtualenv2.
安装包的版本
1 即,运行 pip
(带任何参数)引发 ImportError: No module named 'encodings'
.
2 完全披露:我问了一个 similar question 被错误地关闭为重复。
在没有工作 pip 的情况下获取已安装软件包的列表将非常困难。或者,您可以尝试从安装在 virtualenv site-packages
目录中的文件名中理解:
您可以通过运行ning
获取site-packages
目录
python -m site
并寻找类似
的字符串
'/your/venv/lib/python3.4/site-packages'
走那条路 运行
ls -d /your/venv/lib/python3.4/site-packages/*.dist-info
这应该会列出您的 virtualenv 中大部分已安装的软件包目录。
要清理此列表并创建一个有点类似于正确语法和数据的 requirements.txt
文件,您可以使用
ls -d /your/venv/lib/python3.4/site-packages/*.dist-info | xargs -I% basename % | sed 's/\.dist-info//; s/-/==/; s/_/-/' > requirements.txt
不用说,之后您可能需要稍微清理一下它的内容。
上下文: 从 Debian 8 更新到 9 后,Python 3.4 virtualenvs 停止工作,因为系统站点包全部被 Python 3.5 替换版本。 pip install -r requirements.txt
重新安装所有软件包。 但是,我没有一个适用于所有 virtualenv 的 requirements.txt
。我知道可以使用 pip freeze
创建这样的文件,但是由于上述原因,pip
将不起作用1.
问题: 我需要生成一个软件包列表以及它们各自安装在我无法激活的 virtualenv 中。
问题:有没有办法在没有实际 运行 pip 的情况下为 virtualenv 获取类似于 pip freeze
输出的列表?
注意:这个问题不同于“Return a list of imported Python modules used in a script?”,因为请求的答案不需要访问使用virtualenv的脚本,而且还应该return virtualenv2.
安装包的版本1 即,运行 pip
(带任何参数)引发 ImportError: No module named 'encodings'
.
2 完全披露:我问了一个 similar question 被错误地关闭为重复。
在没有工作 pip 的情况下获取已安装软件包的列表将非常困难。或者,您可以尝试从安装在 virtualenv site-packages
目录中的文件名中理解:
您可以通过运行ning
获取site-packages
目录
python -m site
并寻找类似
的字符串'/your/venv/lib/python3.4/site-packages'
走那条路 运行
ls -d /your/venv/lib/python3.4/site-packages/*.dist-info
这应该会列出您的 virtualenv 中大部分已安装的软件包目录。
要清理此列表并创建一个有点类似于正确语法和数据的 requirements.txt
文件,您可以使用
ls -d /your/venv/lib/python3.4/site-packages/*.dist-info | xargs -I% basename % | sed 's/\.dist-info//; s/-/==/; s/_/-/' > requirements.txt
不用说,之后您可能需要稍微清理一下它的内容。