Pythonzc.buildout公司制造系统路径太胖了,把所有的DEP放在同一条路上?

2024-04-23 12:12:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我手头的当前项目有一个./bin/path,例如./bin/celery命令如下所示:

#!/usr/bin/python

import sys
sys.path[0:0] = [
  '/home/vagrant/proj/eggs/flake8-2.5.0-py2.7.egg',
  '/home/vagrant/proj/eggs/gunicorn-19.4.5-py2.7.egg',
  '/home/vagrant/proj',
  '/home/vagrant/proj/eggs/alembic-0.7.6-py2.7.egg',
  '/home/vagrant/proj/eggs/celery-3.1.18-py2.7.egg',
  '/home/vagrant/proj/eggs/ipython-4.0.0-py2.7.egg',
  '/home/vagrant/proj/eggs/flower-0.8.3-py2.7.egg',
  '/home/vagrant/proj/eggs/futures-2.2.0-py2.7.egg',
  '/home/vagrant/proj/eggs/pytz-2015.4-py2.7.egg',
  '/home/vagrant/proj/eggs/Babel-2.2.0-py2.7.egg',
  '/home/vagrant/proj/eggs/tornado-4.2.1-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/pexpect-4.0.1-py2.7.egg',
  '/home/vagrant/proj/eggs/traitlets-4.0.0-py2.7.egg',
  '/home/vagrant/proj/eggs/simplegeneric-0.8.1-py2.7.egg',
  '/home/vagrant/proj/eggs/pickleshare-0.5-py2.7.egg',
  '/home/vagrant/proj/eggs/decorator-4.0.4-py2.7.egg',
  '/home/vagrant/proj/eggs/kombu-3.0.30-py2.7.egg',
  '/home/vagrant/proj/eggs/billiard-3.3.0.20-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/Mako-1.0.2-py2.7.egg',
  '/home/vagrant/proj/eggs/SQLAlchemy-1.0.4-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/repoze.lru-0.6-py2.7.egg',
  '/home/vagrant/proj/eggs/setuptools-18.2-py2.7.egg',
  '/home/vagrant/proj/eggs/tzlocal-1.2-py2.7.egg',
  '/home/vagrant/proj/eggs/statsd-3.2.1-py2.7.egg',
  '/home/vagrant/proj/eggs/enum34-1.1.1-py2.7.egg',
  '/home/vagrant/proj/eggs/captcha-0.2.1-py2.7.egg',
  '/home/vagrant/proj/eggs/xlwt-1.0.0-py2.7.egg',
  '/home/vagrant/proj/eggs/xlrd-0.9.4-py2.7.egg',
  '/home/vagrant/proj/eggs/lxml-3.4.4-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/chardet-2.3.0-py2.7.egg',
  '/home/vagrant/proj/eggs/pylru-1.0.9-py2.7.egg',
  '/home/vagrant/proj/eggs/iso3166-0.7-py2.7.egg',
  '/home/vagrant/proj/eggs/Pillow-3.0.0-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/blist-1.3.6-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/pycrypto-2.6.1-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/PyYAML-3.11-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/qrcode-5.1-py2.7.egg',
  '/home/vagrant/proj/eggs/jmespath-0.7.1-py2.7.egg',
  '/home/vagrant/proj/eggs/WebTest-2.0.18-py2.7.egg',
  '/home/vagrant/proj/eggs/elasticsearch_dsl-0.0.8-py2.7.egg',
  '/home/vagrant/proj/eggs/17MonIP-0.2.4-py2.7.egg',
  '/home/vagrant/proj/eggs/elasticsearch-2.2.0-py2.7.egg',
  '/home/vagrant/proj/eggs/pynsq-0.6.7-py2.7.egg',
  '/home/vagrant/proj/eggs/PyMySQL-0.6.6-py2.7.egg',
  '/home/vagrant/proj/eggs/Werkzeug-0.10.4-py2.7.egg',
  '/home/vagrant/proj/eggs/voluptuous-0.8.7-py2.7.egg',
  '/home/vagrant/proj/eggs/user_agents-1.0.1-py2.7.egg',
  '/home/vagrant/proj/eggs/ujson-1.9-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/requests-2.7.0-py2.7.egg',
  '/home/vagrant/proj/eggs/redis-2.10.3-py2.7.egg',
  '/home/vagrant/proj/eggs/raven-5.4.4-py2.7.egg',
  '/home/vagrant/proj/eggs/passlib-1.6.2-py2.7.egg',
  '/home/vagrant/proj/eggs/newrelic-2.54.0.41-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/mmh3-2.3.1-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/mock-1.0.1-py2.7.egg',
  '/home/vagrant/proj/eggs/gnsq-0.3.0-py2.7.egg',
  '/home/vagrant/proj/eggs/gevent-1.1b1-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/Flask_WTF-0.11-py2.7.egg',
  '/home/vagrant/proj/eggs/Flask_SQLAlchemy-2.0-py2.7.egg',
  '/home/vagrant/proj/eggs/Flask_Security-1.7.4-py2.7.egg',
  '/home/vagrant/proj/eggs/Flask_Script-2.0.5-py2.7.egg',
  '/home/vagrant/proj/eggs/Flask_Principal-0.4.0-py2.7.egg',
  '/home/vagrant/proj/eggs/Flask_Mail-0.9.1-py2.7.egg',
  '/home/vagrant/proj/eggs/Flask_Login-0.2.11-py2.7.egg',
  '/home/vagrant/proj/eggs/Flask_Cors-2.0.1-py2.7.egg',
  '/home/vagrant/proj/eggs/Flask-0.10.1-py2.7.egg',
  '/home/vagrant/proj/eggs/dogpile.cache-0.5.6-py2.7.egg',
  '/home/vagrant/proj/eggs/cassandra_driver-3.1.0-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/boto3-1.1.0-py2.7.egg',
  '/home/vagrant/proj/eggs/bcrypt-1.1.1-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/arrow-0.5.4-py2.7.egg',
  '/home/vagrant/proj/eggs/ipdb-0.9.0-py2.7.egg',
  '/home/vagrant/proj/eggs/mccabe-0.3.1-py2.7.egg',
  '/home/vagrant/proj/eggs/pep8-1.5.7-py2.7.egg',
  '/home/vagrant/proj/eggs/pyflakes-1.0.0-py2.7.egg',
  '/home/vagrant/proj/eggs/certifi-2015.9.6.2-py2.7.egg',
  '/home/vagrant/proj/eggs/backports.ssl_match_hostname-3.4.0.2-py2.7.egg',
  '/home/vagrant/proj/eggs/ptyprocess-0.5-py2.7.egg',
  '/home/vagrant/proj/eggs/ipython_genutils-0.1.0-py2.7.egg',
  '/home/vagrant/proj/eggs/path.py-8.1.2-py2.7.egg',
  '/home/vagrant/proj/eggs/amqp-1.4.9-py2.7.egg',
  '/home/vagrant/proj/eggs/anyjson-0.3.3-py2.7.egg',
  '/home/vagrant/proj/eggs/MarkupSafe-0.23-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/six-1.9.0-py2.7.egg',
  '/home/vagrant/proj/eggs/beautifulsoup4-4.4.0-py2.7.egg',
  '/home/vagrant/proj/eggs/waitress-0.8.10-py2.7.egg',
  '/home/vagrant/proj/eggs/WebOb-1.4.1-py2.7.egg',
  '/home/vagrant/proj/eggs/python_dateutil-2.4.2-py2.7.egg',
  '/home/vagrant/proj/eggs/urllib3-1.12-py2.7.egg',
  '/home/vagrant/proj/eggs/ua_parser-0.5.0-py2.7.egg',
  '/home/vagrant/proj/eggs/blinker-1.4-py2.7.egg',
  '/home/vagrant/proj/eggs/greenlet-0.4.9-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/WTForms-2.0.2-py2.7.egg',
  '/home/vagrant/proj/eggs/itsdangerous-0.24-py2.7.egg',
  '/home/vagrant/proj/eggs/Jinja2-2.8-py2.7.egg',
  '/home/vagrant/proj/eggs/dogpile.core-0.4.1-py2.7.egg',
  '/home/vagrant/proj/eggs/botocore-1.1.12-py2.7.egg',
  '/home/vagrant/proj/eggs/cffi-1.2.1-py2.7-linux-x86_64.egg',
  '/home/vagrant/proj/eggs/docutils-0.12-py2.7.egg',
  '/home/vagrant/proj/eggs/pycparser-2.14-py2.7.egg',
  '/home/vagrant/proj/parts/serpextract',
  '/home/vagrant/proj/parts/sockjs-tornado',
  ]

import celery.__main__

if __name__ == '__main__':
    sys.exit(celery.__main__._compat_worker())

我觉得这不太对。一个很胖的女人系统路径有严重的性能问题。你知道吗

有没有可能把所有的*.egg放在同一条路径上以加快模块查找时间?就像virtualenvsite-packages

strace使用了我的一个常用命令,发现在open()sys调用和返回-1 ENOENT (No such file or directory上花费了很多时间

如何平鸡蛋?你知道吗


Tags: pathimportflaskhomebineggmainlinux