pip freeze does not show all installed packages

2019-04-28 23:29发布

I am using a virtualenv. I have fabric installed, with pip. But a pip freeze does not give any hint about that. The package is there, in my virtualenv, but pip is silent about it. Why could that be? Any way to debug this?

2条回答
贪生不怕死
2楼-- · 2019-04-28 23:30

I just tried this myself:

create a virtualenv in to the "env" directory:

$virtualenv2.7 --distribute env
New python executable in env/bin/python
Installing distribute....done.
Installing pip................done.

next, activate the virtual environment:

$source env/bin/activate

the prompt changed. now install 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...

And pip freeze shows the correct result:

(env)$pip freeze
Fabric==1.6.1
distribute==0.6.27
paramiko==1.10.1
pycrypto==2.6
wsgiref==0.1.2

Maybe you forgot to activate the virtual environment? On a *nix console type which pip to find out.

查看更多
孤傲高冷的网名
3楼-- · 2019-04-28 23:56

If you have redirected all the pre-installed packages in a file named pip-requirements.txt then it is pretty simple to fix the above issue.

1) Delete your virtualenv folder or create new one (I am giving it a name as venv)

rm -rf venv && virtualenv venv

2) Install all the requirements/dependencies from the pip-requirements.txt

pip install -r pip-requirements.txt

3) Now you can check the installed packages for your Django application

pip freeze

4) If you had forgotten to update your requirements file(pip-requirements.txt), then install fabric again (Optional Step)

Note: After installing any dependency for your Django app, always update the requirements in any file as follows (make sure your virtualenv is activated)

pip freeze > pip requirements.txt

That's it.

查看更多
登录 后发表回答