创建新文件夹并创建虚拟环境后
$ virtualenv venv --distribute并安装两个包
$ pip install Flask gunicorn然后将所有当前pip安装的包写入一个文件。
$ pip freeze > requirements.txt
$ cat requirements.txt
Flask==0.10.1
Jinja2==2.7
MarkupSafe==0.18
Werkzeug==0.9.1
distribute==0.6.34
gunicorn==17.5
itsdangerous==0.22
wsgiref==0.1.2我得到了比预期更长的软件包列表,谁负责安装它们,它们是用来做什么的?有问题的包列表:
wsgiref==0.1.2
itsdangerous==0.22
distribute==0.6.34
MarkupSafe==0.18我主要在我的Ubuntu机器上使用pip,并且没有在相同的命令后安装这些包,我注意到只有在我的mac上才有这种行为。
发布于 2013-07-16 08:05:55
wsgiref和distribute总是出现在virtualenv中,甚至是一个“空”的,你还没有pip install任何东西。参见accepted answer to my where Why does pip freeze report some packages in a fresh virtualenv created with --no-site-packages?获得解释。注意这是Python3.3中修正的a bug。
itsdangerous和MarkupSafe是由较新的Flask版本引入的相对较新的新依赖项。
itsdangerous (docs)是Flask直接需要的。从版本0.10开始-请参阅添加此dependency.MarkupSafe的github commit (docs)是Jinja2所需的,这是Flask所必需的。请参阅github commit.,Jinja2在其2.7版中添加了此依赖项
你说在运行相同的命令后,这些都没有安装在你的Ubuntu机器上。但是你有什么版本的Flask和Jinja2呢?如果它们比你Mac上的版本旧,这就解释了为什么它们没有引入这些新的依赖项。
发布于 2013-07-15 23:33:57
这些看起来像是Flask dependencies,(或者说是flask依赖项的依赖项)
pip install --no-install --verbose Flask
我希望每个项目都有pypi had a list of dependencies,但我没有看到它们...
发布于 2013-07-15 23:35:51
您的virtualenv使用系统范围内安装的软件包,因此pip会将它们与新安装的软件包一起查看。
尝试在创建环境时添加--no-site-packages选项。
或者,尝试显式地运行安装在您的环境中的pip实例(path/to/your/env/bin/pip opts...),也许这会告诉pip忽略系统的包(根本不确定那个包)。
https://stackoverflow.com/questions/17657965
复制相似问题