我有许多python服务,每个都使用virtualenvs。我有时会重建这些环境,并希望节省时间。 mkvirtualenv --system-site-packages
似乎接近我想要的,但它仍然有我不理解的行为。
我使用的一个软件包是gevent(测试版),我直接从GitHub安装:sudo pip install -e git://github.com/surfly/gevent.git@1.0b4#egg=gevent
。这是在virtualenv之外完成的,因此它会进入系统的site-packages
。这很好用,如果我用--system-site-packages
创建一个新的virtualenv,它似乎存在,但指定了不同的rev和egg:
[msherry@hostname:~]$ mkvirtualenv test --system-site-packages
New python executable in test/bin/python2.7
Also creating executable in test/bin/python
Installing setuptools............done.
Installing pip...............done.
[msherry@hostname:~]$ workon test
[msherry@hostname:~]$ pip freeze|grep gevent
-e git://github.com/surfly/gevent.git@15418fc8ff4460069cf42b4b0341969c54455ddd#egg=gevent-dev
至少看起来已经安装了。但是,当我运行pip install -e git://github.com/surfly/gevent.git@1.0b4#egg=gevent
时,gevent的(缓慢)安装过程再次开始 - 看起来我使用--system-site-packages
没有任何收获。
理想情况下,我想请注意我正在请求的gevent版本已经存在,而不是尝试再次安装它。有没有办法做我正在尝试的事情?
答案 0 :(得分:0)
在系统范围内安装时,请尝试稍微不同的语法。
sudo pip install git+git://github.com/surfly/gevent.git@1.0b4#egg=gevent
除了-e
之外,这几乎与您的相同,并且在您的网址中包含<vcs>
前缀。没有这个,pip说
AssertionError: Sorry, 'git://github.com/surfly/gevent.git' is a malformed VCS url. The format is <vcs>+<protocol>://<url>, e.g. svn+http://myrepo/svn/MyApp#egg=MyApp
我也注意到你通过pip在“可编辑的”中安装软件包时所做的事情。 mode:我得到了提交哈希版本,就像你对pip freeze | grep gevent
-e git://github.com/surfly/gevent.git@15418fc8ff4460069cf42b4b0341969c54455ddd#egg=gevent-dev