从 virtualenv,pip freeze >requirements.txt 给了垃圾音调!怎么修剪呢? [英] From virtualenv, pip freeze > requirements.txt give TONES of garbage! How to trim it out?

查看:24
本文介绍了从 virtualenv,pip freeze >requirements.txt 给了垃圾音调!怎么修剪呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习本教程:http://devcenter.heroku.com/articles/django

在某些时候我应该这样做:

At some point I'm suposed to do:

pip freeze > requirements.txt

(Ofc.来自 virtualenv 创建的 python 实例)

(Ofc. from virtualenv created instance of python)

我明白了:

(venv)przemoli@ubuntu:~/Programowanie/hellodjango$ cat requirements.txt 
BeautifulSoup==3.2.0
Brlapi==0.5.5
CherryPy==3.1.2
ClientForm==0.2.10
Django==1.3
GnuPGInterface==0.3.2
PAM==0.4.2
PIL==1.1.7
Routes==1.12.3
Twisted-Core==11.0.0
Twisted-Names==11.0.0
Twisted-Web==11.0.0
WebOb==1.0.8
adium-theme-ubuntu==0.3.1
apt-xapian-index==0.44
apturl==0.5.1ubuntu1
chardet==2.0.1
command-not-found==0.2.44
configglue==1.0
cssutils==0.9.8a1
defer==1.0.2
distribute==0.6.19
django-tagging==0.3.1
dnspython==1.9.4
duplicity==0.6.15
gnome-app-install==0.4.7-nmu1ubuntu2
httplib2==0.7.2
jockey==0.9.4
keyring==0.6.2
launchpadlib==1.9.8
lazr.restfulclient==0.11.2
lazr.uri==1.0.2
louis==2.3.0
lxml==2.3
mechanize==0.1.11
nvidia-common==0.0.0
oauth==1.0.1
onboard==0.96.1
oneconf==0.2.6.7
papyon==0.5.5
pexpect==2.3
piston-mini-client==0.6
protobuf==2.4.0a
psycopg2==2.4.4
pyOpenSSL==0.12
pycrypto==2.3
pycups==1.9.59
pycurl==7.19.0
pyinotify==0.9.1
pyparsing==1.5.2
pyserial==2.5
pysmbc==1.0.10
python-apt==0.8.0ubuntu9
python-dateutil==1.4.1
python-debian==0.1.20ubuntu2
python-virtkey==0.60.0
pyxdg==0.19
sessioninstaller==0.0.0
simplejson==2.1.6
system-service==0.1.6
ubuntu-sso-client==1.4.0
ubuntuone-couch==0.3.0
ubuntuone-installer==2.0.0
ubuntuone-storage-protocol==2.0.0
ufw==0.30.1-2ubuntu1
unattended-upgrades==0.1
usb-creator==0.2.23
virtualenv==1.6.4
wadllib==1.2.0
wsgiref==0.1.2
xdiagnose==1.1
xkit==0.0.0
zope.interface==3.6.1

在 heroku 上部署时,它在 Brlapi 上失败.....

When deploying on heroku it fails at Brlapi .....

我在 ubuntu 上的主要 python 安装中看到了很多东西.这是不好的,因为 Ubuntu 本身就使用 python 来处理很多事情(ubuntu-one、usb-creator 等).

I see lots of stuff from my main python installation which is on ubuntu. Which is BAD since Ubuntu use python for quite a few thing itself (ubuntu-one, usb-creator, etc..).

我在heroku上不需要它们!我只需要 Django、psycopg2 和它们的依赖项.我什至不知道是 pip 还是 virutalenv 的错.(如果您想知道我的设置,请查看上面的链接,我将其复制到终端中)

I do not need them on heroku! I need only Django, psycopg2, and their dependencies. I do not even know if its fault of pip, or virutalenv. (If you want to know my setup look at link above I copied it into terminal)

推荐答案

这也是让我颇为烦恼的一件事.当您创建没有 --no-site-packages 标志的 virtualenv 时,会发生这种情况.

That is one thing that has bugged me too quite a bit. This happens when you create a virtualenv without the --no-site-packages flag.

您可以执行以下操作:

  1. 使用 --no-site-packages 标志创建 virtualenv.
  2. 安装应用程序时,不要直接运行pip install ,而是先将库添加到您的requirements.txt,然后安装需求.这较慢,但可确保您的要求得到更新.
  3. 手动删除不需要的库.我遵循的一个经验法则是在我的 INSTALLED_APPS 和数据库适配器中添加任何内容.由于依赖关系,大多数其他必需的库将自动安装.我知道这很愚蠢,但我通常会这样做.
  1. Create virtualenv with the --no-site-packages flag.
  2. When installing apps, dont run pip install <name> directly, instead, add the library to your requirements.txt first, and then install the requirements. This is slower but makes sure your requirements are updated.
  3. Manually delete libraries you dont need. A rule of thumb i follow for this is to add whatever is there in my INSTALLED_APPS, and database adapters. Most other required libraries will get installed automatically because of dependencies. I know its silly, but this is what I usually end up doing.

-- 编辑 --

我已经写了一个几个脚本帮助管理这个.第一个运行 pip freeze 并将找到的库添加到提供的需求文件中,另一个运行 pip install,然后将其添加到需求文件中.

I've since written a couple of scripts to help manage this. The first runs pip freeze and adds the found library to a provided requirements file, the other, runs pip install, and then adds it to the requirements file.

function pipa() {
    # Adds package to requirements file.
    # Usage: pipa <package> <path to requirements file>
    package_name=$1
    requirements_file=$2
    if [[ -z $requirements_file ]]
    then
        requirements_file='./requirements.txt'
    fi
    package_string=`pip freeze | grep -i $package_name`
    current_requirements=`cat $requirements_file`
    echo "$current_requirements
$package_string" | LANG=C sort | uniq > $requirements_file
}

function pipia() {
    # Installs package and adds to requirements file.
    # Usage: pipia <package> <path to requirements file>
    package_name=$1
    requirements_file=$2
    if [[ -z $requirements_file ]]
    then
        requirements_file='./requirements.txt'
    fi
    pip install $package_name
    pipa $package_name $requirements_file
}

这篇关于从 virtualenv,pip freeze >requirements.txt 给了垃圾音调!怎么修剪呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆