我正在使用 virtualenv
。我已安装了 fabric
和 pip
。但是,pip freeze
不会提供任何有关此的提示。该软件包在我的 virtualenv
中,但 pip 没有给出任何信息。为什么会这样呢?有什么调试方法吗?
我正在使用 virtualenv
。我已安装了 fabric
和 pip
。但是,pip freeze
不会提供任何有关此的提示。该软件包在我的 virtualenv
中,但 pip 没有给出任何信息。为什么会这样呢?有什么调试方法吗?
您可以尝试使用--all
标志,像这样:
pip freeze --all > requirements.txt
我已经尝试过这个操作:
在 "env" 目录中创建一个虚拟环境:
$virtualenv2.7 --distribute env
New python executable in env/bin/python
Installing distribute....done.
Installing pip................done.
接下来,激活虚拟环境:
$source env/bin/activate
提示已更改。现在安装Fabric:
(env)$pip install fabric
Downloading/unpacking fabric
Downloading Fabric-1.6.1.tar.gz (216Kb): 216Kb downloaded
Running setup.py egg_info for package fabric
...
Successfully installed fabric paramiko pycrypto
Cleaning up...
并且 pip freeze
显示正确的结果:
(env)$pip freeze
Fabric==1.6.1
distribute==0.6.27
paramiko==1.10.1
pycrypto==2.6
wsgiref==0.1.2
which pip
以查找。pip freeze | grep fabric
(我安装了很多包)时出错了。我敢肯定我已经手动扫描了整个列表,但不知怎么就跳过了它。奇怪的是它被安装为 Fabric
,但无论如何这都不是我的好表现。 - blueFastgrep -i
也是我的好朋友 :) - mawimawifabric
团队中谁想到打破多年来使用小写字母作为包名的传统呢?特别是当该软件包在pypi
上被称为fabric
时。 - blueFastdjango
注册为 Django
? - mawimawi虽然您的问题是由于打字错误引起的,但为了帮助其他用户:
pip freeze
不显示pip所依赖的软件包,如果您想获取所有软件包,可以使用 pip freeze --all
或者 pip list
。
1)删除您的虚拟环境文件夹或创建一个新的(我给它取名为venv)
rm -rf venv && virtualenv venv
2) 从 pip-requirements.txt 安装所有的要求/依赖项
pip install -r pip-requirements.txt
3) 现在您可以检查已安装的Django应用程序的软件包
pip freeze
4) 如果您忘记更新要求文件(pip-requirements.txt),那么再次安装fabric (可选步骤)
注意: 在为您的Django应用程序安装任何依赖项后,请始终按照以下方式更新任何文件中的要求(确保您的virtualenv已激活)
pip freeze > pip requirements.txt
就这样。
除了以上的修复方法,我还需要添加我的修复方法。在windows上,即使激活虚拟环境,pip freeze
仍然没有给我所有安装包的列表。所以我用python -m pip install --upgrade pip
命令升级了我的pip,然后使用pip freeze
。这次它成功并给了我所有安装包的列表。
对于那些通过PyCharm IDE添加Python模块的人,在从命令提示符生成虚拟环境后,祝你好运!你需要手动重新构建requirements.txt文件,并通过首先运行pip3 freeze并添加PyCharm缺失的内容来实现。
我强烈建议切换到Visual Studio Code。
如果以上答案都对你没有用。
就像我一样,你可能在venv和pip配置方面遇到了问题。
进入你的venv/bin目录,打开pip文件,看看第二行是不是这样的: '''exec' "path/to/yourvenv/bin/python3" "$0" "$@"
看看这一行是否正确地指向了你的venv。 例如,在我的情况下, 我最初将虚拟环境命名为venv1, 后来将其重命名为venv2。 这样做会导致我的pip文件第二行出现:'''exec' "venv1/bin/python3" "$0" "$@" 为了正常工作,它应该有:'''exec' "venv2/bin/python3" "$0" "$@" 注意 "venv2" 而不是 "venv1",因为venv1现在已经重命名为venv2。
由于这个原因,Python会查找venv2中的pip并抛出错误或无法按预期工作。
pip
吗? - Thomas Fenzl